杭电2034 人见人爱A-B

杭电2034 http://acm.hdu.edu.cn/showproblem.php?pid=2034

杭电2034 人见人爱A-B

 

题目大意:

两个集合(元素没有重复的),前一个集合元素‘-’后一个集合元素,即前一个集合中有的,在后一个集合中有的,减去后即不存在即可。

可以用判断数组间是否相同,相同即将前一个数组元素置0,然后遍历非0输出即可。

注意,行末要求空格。。。要不然交上去会PE

 

AC代码:

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int n,m,num;
bool f;
int a[10000],b[10000];
int main() {
    while(cin>>n>>m) {
        if(n==0&&m==0) {
            return 0;
        } else {
            for(int i=0;i<n;i++) {
                cin>>a[i];
            }
            for(int j=0;j<m;j++) {
                cin>>b[j];
            }
            num=0;
            for(int i=0;i<n;i++) {
                for(int j=0;j<m;j++) {
                    if(a[i]==b[j]) {
                        a[i]=0;
                        num++;
                    }
                }
            }
            sort(a,a+n);
            f=false;
            if(num==n) {
                f=true;
            }
            if(f) {
                cout<<"NULL"<<endl;
            } else {
                for(int i=0;i<n-1;i++) {
                    if(a[i]!=0) {
                        cout<<a[i]<<" ";
                    }
                } cout<<a[n-1]<<" "<<endl;
            }
        }
    }
    return 0;
}

要求空格。