编程-C++用数组表示集合问题

问题描述

C++用数组表示集合问题

设A、B是两个具有10个正整数的集合,试编程求两个集合的并、交、差。
分析:
a) 根据集合的定义, A、B内不应该有重复的元素,因此,在输入集合数据时, 应该同时检查元素是否已经存在,这可以定义一个函数int find(int a[], int search)来实现,此函数在求并、交、差时同样需要调用。
b) 在实现A和B的并时,可以定义一个20个元素的数组C,先将A中所有元素存入C,然后对B中每个元素,检查是否已经包含在A中,如果不存在,则存入C中。
c) 实现A和B的交集时,可以定义一个10个元素的数组D,依次取A中的元素,如果存在于B中,则存入D。
d) 实现A-B时, 定义一个10个元素的数组E,依次取A中元素,如果不存在于B中,则存入E;同理可求B-A。

求大神帮助...表示完全不会把数组元素删了...跪求代码...

解决方案

按照给的“分析”处理。再定义一个数组,去添加重复的数据,而不用涉及删除。

解决方案二:

设A、B是两个具有10个正整数的集合,试编程求两个集合的并、交、差。

其实这个问题多出现在一些企业的面试题中,建议看看程序员面试宝典,因为要考虑到时空效率问题,不是说你用笨办法能做出来就行......

解决方案三:

讲点废话:
你可以假设一个稀疏矩阵,A=行,B=列,各自排序后用(A[0],B[0])-(A[n],B[m])作为稀疏矩阵中的非0元素
如果有(A[k1],B[k2]),其中A[k1]==B[k2],那么就是重复元素(矩阵的[0,0],[1,1]...[n,n])
比如A={1,2,4} B={0,2,3}
0 1 2 3 4


0|0 1 1 0 1
1|0 0 0 0 0
2|0 1 (1) 0 1
3|0 1 1 0 1
4|0 0 0 0 0
当然这个方法比较浪费空间(m x n),离散数学书里应该提供了更好的方法

正经答题:
推荐使用map,只需要遍历数组A,++map[A[i]];再遍历数组B时,map[B[i]]==1?return "Warning,重复元素:"+B[i]+"/n":++map[B[i]];

解决方案四:

按部就班做就是了
题目意思是,每次加入一个元素,先查找,如果找到了就是重复数据,不加入数组,没找到就是非重复数据,加入数组。
题目给的思路,未必是最佳实现,但一定是可以实现的。也就是说正确性是没问题的。

仔细理解,题目的思路,这是最基本的方法
那些优化算法,都是在这种基础算法上,加以分析,设法改进,优化后的结果。

解决方案五:

集合本身是不用考虑顺序的,不过有序的集合更方便查找,所以通常非重复集合存储方式,都是有序存储的

时间: 2024-12-10 03:37:26

编程-C++用数组表示集合问题的相关文章

vc-使用VC++语言用数组实现集合怎么做?

问题描述 使用VC++语言用数组实现集合怎么做? 提示,定义一个数组,定义Add IndexOf GetLength三个函数.当数组容纳不下的时候,要求能够扩充数组.编写一个主程序调用如上功能,并且实现对数组的遍历. 解决方案 #include <iostream> using namespace std; class List { private: int * arr; int length; int arrsize; public: List() { arrsize = 10; arr =

数组编号-C++编程:对数组A中的N(0&amp;amp;lt;N&amp;amp;lt;100)个整数从小到大进行连续编号

问题描述 C++编程:对数组A中的N(0<N<100)个整数从小到大进行连续编号 要求不能改变数组A中元素的顺序,且相同的整数要具有相同编号. 例如:数组A=(5,3,4,7,3,5,6) 则输出为:(3,1,2,5,1,3,4) 拜托拜托,求大神帮忙,注意是C++不是C语言, 解决方案 参考:http://zhidao.baidu.com/link?url=MLhLVq_4_MVFn0atxFUDTqfTXfMrgh-VNnyj0o5O-FT1kDcS7gTfJJwCJdgeSkwp5Rtn

java中数组转集合问题.

问题描述 java中数组转集合问题. List test = java.util.Arrays.asList(new int[]{3, 5, 3, 4}); 为什么这个会报错,也会报错. List test = java.util.Arrays.asList(new Double[]{3, 5, 3, 4}); 这个却不会报错,而且能用增强for,为什么Integet却连转都转不了. 还有,基本数据类型数据能有办法转集合吗? 数组转集合后是不是不能添加元素. 解决方案 List test = j

jsp-怎么把JSON字符串转换成java字符串或数组或者集合

问题描述 怎么把JSON字符串转换成java字符串或数组或者集合 var chk_value =[]; $('input[name="zd_resourcecb"]:checked').each(function(){ chk_value.push($(this).val()); }); var chk_values = JSON.stringify(chk_value); jsp是这么写的 不过得到的是JSON字符串 ,我想要得到java类型的字符串或是数组什么的 解决方案 字符串反

语言二维数组-C语言编程中二维数组以及递归函数问题

问题描述 C语言编程中二维数组以及递归函数问题 有编号分别为0,1,2,3,4的5本书,准备分给5个人A,B,C,D,E,每个人阅读兴趣用一个二维数组加以描述,公式如下: 1 i喜欢j书 Like[i][j] = 0 i不喜欢j书 写一个程序,输出所有分书方案,让人人皆大欢喜.假定5个人对5本书的阅读兴趣如下图所示. 解决方案 答案 a 2 b 0 c 1 d 3 e 4 要程序先采纳 解决方案二: 大半夜的,干嘛递归呢 5个for循环妥妥的 int num=0; struct answer {

java算法-java用内部类实现个山寨list(不许使用数组和集合)

问题描述 java用内部类实现个山寨list(不许使用数组和集合) java如何使用内部类来实现一个山寨的list,不允许使用数组和集合相关技术,只需实现list的add,size,get方法即可~~ 求大神指点下~~ 问题已解决~~~~~ 下面公布代码: 使用内部类实现的 在发布一种非内部类实现的 解决方案 不用数组和集合,可以用string String data = ""; void add(int value) { if (data.equals(""))

请问数组与集合的区别

问题描述 数组与集合的区别 解决方案 解决方案二:数组是数组,集合是集合.数组也属于集合的一种.解决方案三:一般,数组是静态的,而集合是可以动态扩展容量,集合提供更多的成员方法,不过数组更轻量级,语言级支持,性能会更好.解决方案四:他们使用的场合不同数组,修改不频繁,但是要求访问使用下标集合,添加,删除频繁,集合有很多种了,解决方案五:集合表示一组可以通过遍历每个元素来访问的一组对象,特别是可以用foreach循环来访问它们.对象如果可以提供相关对象的引用,就是一个集合,称为枚举,它可以遍历集合

详解JAVA高质量代码之数组与集合_java

1.性能考虑,优先选择数组 数组在项目开发当中使用的频率是越来越少,特别是在业务为主的开发当中,首先数组没有List,Set等集合提供的诸多方法,查找增加算法都要自己编写,极其繁琐麻烦,但由于List,Set等集合使用泛型支持后,存放的都为包装类,而数组是可以使用基本数据类型,而使用基本数据类型的执行运算速度要比包装类型快得多,而且集合类的底层也是通过数组进行实现. 2.若有必要,使用变长数组 在学习集合类当中,很多人喜欢将数组的定长拿来和集合类型的自变长来做比较,但其实这种比较并不合适,通过观

谈谈JavaScript中的数组、集合及效率

javascript|集合|数组 数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push).删除(shift)里面元素,我们还可以通过for循环遍历里面的元素,那么除了数组我们在JavaScript里还可以有别的集合吗? 由于JavaScript的语言特性,我们可以向通用对象动态添加和删除属性.所以Object也可以看成是JS的一种特殊的集合.下面比较一下Array和Object的特性: Array: 新建:var ary = new Array(); 或 va