かわいいAB
件名の説明:
そのトピックは、労働組合の二組を求めている、学生は{A} + {B}で最も簡単な主題の一つを覚えているだろう先月月のレースに参加し、今日我々は見つけること2 AB貧しいコレクションは、減算は、コレクションに行われます。(もちろん、我々はすべてここで、セットの定義はありません2と同じ要素を持つコレクションです知っているかを思い出させる)
ああ、非常に単純な、右?入力
ラインを表す入力データの各セットは、各データ列の先頭は2 N(0 <= N <=の整数であり 100) 及びm(0 <= M <= 100)、 それぞれ、セットAとセットBの要素数を表します。次いで、集合Aに属するn個の要素の前に、N + m個の要素に続く、セットBに範囲を逸脱することなく、各整数INTに属する要素の残りの部分は、間隔を置いた要素の間にスペースがある。
もし、N = 0とm = 0の入力の終了を示し、処理されていません。出力
結果は、各要素の後にスペースで、問題を簡単にするために、空集合、出力「NULL」、または大きなに小さいから出力された場合、各データ出力ラインデータのために、それは、ABの結果を示します。
サンプル入力
3 3 1 2 3 1 4 7 3 7 2 5 8 1 2 3 4 5 6 7 8 0 0サンプル出力
2 3 NULL
その答えによって:
#include<stdio.h>
int main() {
int n,m,i,j,flag,count;
int a[100],b[100],c[100]; //数组C作为辅助数组
while (scanf("%d %d", &n, &m)!=EOF) {
if(n==0&&m==0)break;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(j=0;j<m;j++){
scanf("%d",&b[j]);
}
count=0; //计数
for(i=0;i<n;i++){
flag=0;
for(j=0;j<m;j++){
if(a[i]==b[j]){ //若数组b的数在数组a中,跳出循环
flag=1;
break;
}
}
if(flag==0){
c[count++]=a[i];
}
}
if(count==0){
printf("NULL\n");
continue;
}
for(i=0;i<count;i++){ //从小到大排序
for(j=count-1;j>i;j--){
if(c[i]>c[j]){
int temp=c[i];
c[i]=c[j];
c[j]=temp;
}
}
}
for(i=0;i<count;i++){
printf("%d ",c[i]);
}
printf("\n");
}
return 0;
}