c#有两个数组,想把这个两组中相同的元素放在另一个数组中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#有两个数组,想把这个两组中相同的元素放在另一个数组中相关的知识,希望对你有一定的参考价值。
例如:
str1="1","2","4","9","6","23","12","28","10","5","15",30","19","22";
str2="1","4","2","6","30","26","33","19","27","42","44";
想把这两个数组中相同元素,比如 "1","2","4","6","19","30" 这几个元素放到一个新的数组,比如strSame中,str1中的剩下那些和str2不同的也放到一个新的数组中,比如
str1P="9","23","12","28","10","5","22";,同样的str2中的那些和str1不同的也放到一个新的数组中,比如str2P="26","33","27","42","44";
麻烦各位大侠帮帮忙,我刚学C#,水平有点菜,感激不尽啊
string[] str1="1","2","4","9","6","23","12","28","10","5","15","30","19","22";
string[] str2="1","4","2","6","30","26","33","19","27","42","44";
//这是交集
var res = str1.Intersect(str2);
//这是差集
var res1 = str1.Except(res);
var res2 = str2.Except(res);
如果是自己的方法,这使用 Dictionary<string,int>暂存一下,下扫描str1,把所有值放入Dictionary(value设置为1)
然后扫描str2,如果值存在则把value设置为0。如果值不存在则设置为-1
这样二次扫描完成,则所有value为1的就是你的str1p,value为-1的就是你的str2p,而value为0的就是你要求的差值 参考技术A string[] str1 = new string[] "1", "2", "4", "9", "6", "23", "12", "28", "10", "5", "15", "30", "19", "22" ;
string[] str2 = new string[] "1", "4", "2", "6", "30", "26", "33", "19", "27", "42", "44" ;
string[] str3 = str1.Where(t=>str2.Contains(t)).ToArray();
str3就是你想要的答案 参考技术B \\伪代码
str3=new string [str1长度+str2长度];
for(i=0;i<str1长度;i++)
for(j=0;j<str2长度;i++)
if(str1[i]=str2[j])
str3.add(str1[i])
差不多就是这个原理了 剩下的饿自己想 参考技术C 有个笨办法..双重循环,把数组1的每个值拿出来,与数组2的每个值相比较,想同的就加进新数组里 参考技术D 做一个阵列试试追问
能具体说一下吗,最好有代码指导一下
华为机试HJ93:数组分组
作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
题目描述:
输入int型数组,询问该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,输出true;不满足时输出false。
本题含有多组样例输入。
输入描述:
第一行是数据个数,第二行是输入的数据
输出描述:
返回true或者false
示例:
输入:
4 1 5 -5 1 3 3 5 8
输出:
true false
说明:
第一个样例: 第一组:5 -5 1 第二组:1 第二个样例:由于3和5不能放在同一组,所以不存在一种分法。
解题思路:
这题可以用递归解决。首先输入n个数字,将5的倍数和3的倍数分别累加得到sum3和sum5,其他的数字放在容器v中;用add函数进行递归,单个数字从容器中提出来加到sum3或者sum5中,以此类推,直到所有数字都加进去了;之后,判断sum3和sum5是否一致,然后一级级返回标识符即可。
测试代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool add(int sum5,int sum3,vector<int> v)
{
if(v.size()==0)
{
if(sum5==sum3)
return true;
else
return false;
}
else{
int b=v.back();
v.pop_back();
return add(sum5+b,sum3,v)||add(sum5,sum3+b,v);
}
}
int main()
{
int num;
while(cin>>num)
{
int sum3=0;
int sum5=0;
vector<int> v;
for(int i=0;i<num;++i)
{
int temp;
cin>>temp;
if(temp%5==0)
sum5+=temp;
else if(temp%3==0)
sum3+=temp;
else
v.push_back(temp);
}
if(add(sum5,sum3,v))
cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
return 0;
}
以上是关于c#有两个数组,想把这个两组中相同的元素放在另一个数组中的主要内容,如果未能解决你的问题,请参考以下文章