#include <iostream>
#include <set> //使用set需要包含此头文件
using namespace std;
int main()
{
set<int> s;
int n,m,i,a;
while(cin>>n>>m)
{
if(n==0&&m==0)
break;
s.clear();
for(i=0;i<n;i++)
{
cin>>a;
s.insert(a);
}
for(i=0;i<m;i++)
{
cin>>a;
if(s.find(a)!=s.end())
s.erase(a);
}
if(s.size()==0)
cout<<"NULL"<<endl;
else
{
for(set<int>::iterator t=s.begin();t!=s.end();t++)
cout<<*t<<" ";
cout<<endl;
}
}
return 0;
}
自己写的代码:
要点:记得每次完了要对标记初始化
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
#define N 100
typedef struct num
{
int x;
int flag=1;
} num;
bool cmp(num a,num b)
{
return a.x<b.x;
}
int main()
{
num a[N],b[N];
int m,n,i,j;
while(cin>>n>>m)
{
int count=0;
if(m==0&&n==0)
break;
for(i=0;i<n;i++)
{
a[i].flag=1;
}
for(i=0;i<n;i++)
{
cin>>a[i].x;
}
for(i=0;i<m;i++)
{
cin>>b[i].x;
}
sort(a,a+n,cmp);
sort(b,b+m,cmp);
for(j=0;j<m;j++)
{
for(i=0;i<n;i++)
{
if(a[i].x==b[j].x)
a[i].flag=0;
}
}
for(i=0;i<n;i++)
{
if(a[i].flag==0)
count++;
}
if(count==n)
cout<<"NULL"<<endl;
else
{
for(i=0;i<n;i++)
{
if(a[i].flag==1)
cout<<a[i].x<<" ";
}
cout<<endl;
}
}
}