求两个整型数组的异集,即A+B-(A与B的交集)。
例如a[]={1,2,3,4,5}, b[]={2,3},则a,b的异集为{1,4,5}。
用visit数组标记 数组b,如果有与数组a,相等的 就就标记置为1;用flag 来标记数组a的元素,如果有与b相等的,则将flag置为1 。
#include<iostream>
#include<string>
using namespace std;
void main(){
int la, lb;
cout << "请输入数组a的长度:" << endl;
cin >> la;
int *a = new int [la];
for (int i = 0; i < la; i++)
cin >> a[i];
cout << "请输入数组b的长度:" << endl;
cin >> lb;
int *b = new int[lb];
int *visit = new int[lb];
for (int i = 0; i < lb; i++){
cin >> b[i];
visit[i] = 0;
}
int *c = new int[la + lb];
int flag, m = 0;
for (int i = 0; i < la; i++){
flag = 0;
for (int j = 0; j < lb; j++){
if (a[i] == b[j]){
flag = 1;
visit[j] = 1;
break;
}
}
if (flag == 0)
c[m++] = a[i];
}
for (int i = 0; i < lb; i++){
if (visit[i] == 0){
c[m++] = b[i];
}
}
cout << "数组异集为:" << endl;
for (int i = 0; i < m; i++)
cout << c[i] << " ";
cout << endl;
system("pause");
}