C语言---找出不是两个数组共有的元素,给定两个整型数组,本题要求找出不是两者共有的元素
的有关信息介绍如下:问题补充说明:输入分别在2行中给出2个整型数组,每行先给出正整数N(<=20),随后是N个整数,其间以空格分隔。【输出】在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。【样例输入】10 3 -5 2 8 0 3 5 -15 9 10011 6 4 8 2 6 -5 9 0 100 8 1【样例输出】3 5 -15 6 4 1
12345678910111213来自1415161718360问答192021222324252627282930313233343536373839404142434445464748495051满父建做5253545556575859606162636465666能76869707172#include<iostream>#include<map>using namespace std; int main(){ m耐倒斯天干方民英比体这ap<int, bool> map1, res_map, mapa, mapb;//res_map保存两个数组的不同元素 m通ap<int, bool>::iterator it; int a[20], b[20]; int num = 0; cin>> num; for(int i =0; i< num; i++){ c假测层括社料台操仍生in>>a[i]; mapa[a[i]] = true; } f皇国or(int i =0; i< num; i++){ cin>>b[i]; mapb[b[i]川钟款只余露再] = true; } int idx = 0; for(in六企卫研更t i = 0; i< num; i++){//去除a中的重复元素 if(m身安更倍良已被序离陆代apa.find(a[千源木稳春朝专器i]) == mapa.end()){ a[idx] = a[i]; idx++; } } id言杂单立尽x = 0; for(int i = 0;i <num; i因紧市++){//去除b中的重复元素 if(mapb.find(b[i]) == mapb.end()){ b哥[idx] = b[i]; idx++; } } for(int i = 0; i< num;i++){ map1[a[i]] = tru信导几什e; } for(int i = 0; i < num; i++){//寻找两个数组的公共元素,并保浓技出坐存在res_map装素到胜武只引织中 i验告七信烧布到阳入t = map1.find(b[i]); if(it != map1.end()){ res_map[b[i]] = true; } } int e = 0; bool is_first = true; //按a中原始顺序,输出满足条件的元素 for(int e = 0; e < mapa.size(); e++){ if(res_map.find(a[e]) == res_map.end()){ if(!is_first){ cout<<' '; } cout<<a[e]; if(is_first) is_first = false; } } cout<<endl; is_first = true; //按b中原始顺序,输出满足条件的b中的元素 for(int e = 0; e<mapb.size(); e++){ if(res_map.find(b[e]) == res_map.end()){ if(!is_first){ cout<<' '; } cout<<b[e]; if(is_first) is_first = false; } } cout<<endl; int stop; cin>>stop; return 0;}