人见人爱A-B
Problem Description 參加過上個月月賽的同學(xué)一定還記得其中的一個最簡單的題目,就是{A}+{B},那個題目求的是兩個集合的并集,今天我們這個A-B求的是兩個集合的差,就是做集合的減法運算。(當(dāng)然,大家都知道集合的定義,就是同一個集合中不會有兩個相同的元素,這里還是提醒大家一下)
呵呵,很簡單吧? Input 每組輸入數(shù)據(jù)占1行,每行數(shù)據(jù)的開始是2個整數(shù)n(0<=n<=100)和m(0<=m<=100),分別表示集合A和集合B的元素個數(shù),然后緊跟著n+m個元素,前面n個元素屬于集合A,其余的屬于集合B. 每個元素為不超出int范圍的整數(shù),元素之間有一個空格隔開.
如果n=0并且m=0表示輸入的結(jié)束,不做處理。 Output 針對每組數(shù)據(jù)輸出一行數(shù)據(jù),表示A-B的結(jié)果,如果結(jié)果為空集合,則輸出“NULL”,否則從小到大輸出結(jié)果,為了簡化問題,每個元素后面跟一個空格. Sample Input 3 3 1 2 3 1 4 7 3 7 2 5 8 2 3 4 5 6 7 8 0 0 Sample Output 2 3 NULL 1 #include <stdio.h> 2 3 int main(){ 4 int n; 5 int m; 6 int i; 7 int j; 8 int flag1; 9 int flag2; 10 int temp; 11 int n_number[101]; 12 int m_number[101]; 13 14 while(1){ 15 flag2=0; 16 scanf("%d%d",&n,&m); 17 18 if(n==0 && m==0) 19 break; 20 21 for(i=0;i<n;i++) 22 scanf("%d",&n_number[i]); 23 24 for(i=0;i<n-1;i++){ //題目要求集合A從小到大輸出,對A集合先排序 25 for(j=i+1;j<n;j++){ 26 if(n_number[i]>n_number[j]){ 27 temp=n_number[i]; 28 n_number[i]=n_number[j]; 29 n_number[j]=temp; 30 } 31 } 32 } 33 34 for(i=0;i<m;i++) 35 scanf("%d",&m_number[i]); 36 37 for(i=0;i<n;i++){ 38 flag1=0; 39 for(j=0;j<m;j++){ 40 if(n_number[i]==m_number[j]){ 41 flag1=1; 42 break; 43 } 44 } 45 46 if(flag1==0){ 47 printf("%d ",n_number[i]); 48 flag2=1; 49 } 50 51 } 52 53 if(flag2==0) 54 printf("NULL"); 55 56 printf("\n"); 57 58 59 } 60 61 62 63 return 0; 64 }
呵呵,很簡單吧? Input 每組輸入數(shù)據(jù)占1行,每行數(shù)據(jù)的開始是2個整數(shù)n(0<=n<=100)和m(0<=m<=100),分別表示集合A和集合B的元素個數(shù),然后緊跟著n+m個元素,前面n個元素屬于集合A,其余的屬于集合B. 每個元素為不超出int范圍的整數(shù),元素之間有一個空格隔開.
如果n=0并且m=0表示輸入的結(jié)束,不做處理。 Output 針對每組數(shù)據(jù)輸出一行數(shù)據(jù),表示A-B的結(jié)果,如果結(jié)果為空集合,則輸出“NULL”,否則從小到大輸出結(jié)果,為了簡化問題,每個元素后面跟一個空格. Sample Input 3 3 1 2 3 1 4 7 3 7 2 5 8 2 3 4 5 6 7 8 0 0 Sample Output 2 3 NULL 1 #include <stdio.h> 2 3 int main(){ 4 int n; 5 int m; 6 int i; 7 int j; 8 int flag1; 9 int flag2; 10 int temp; 11 int n_number[101]; 12 int m_number[101]; 13 14 while(1){ 15 flag2=0; 16 scanf("%d%d",&n,&m); 17 18 if(n==0 && m==0) 19 break; 20 21 for(i=0;i<n;i++) 22 scanf("%d",&n_number[i]); 23 24 for(i=0;i<n-1;i++){ //題目要求集合A從小到大輸出,對A集合先排序 25 for(j=i+1;j<n;j++){ 26 if(n_number[i]>n_number[j]){ 27 temp=n_number[i]; 28 n_number[i]=n_number[j]; 29 n_number[j]=temp; 30 } 31 } 32 } 33 34 for(i=0;i<m;i++) 35 scanf("%d",&m_number[i]); 36 37 for(i=0;i<n;i++){ 38 flag1=0; 39 for(j=0;j<m;j++){ 40 if(n_number[i]==m_number[j]){ 41 flag1=1; 42 break; 43 } 44 } 45 46 if(flag1==0){ 47 printf("%d ",n_number[i]); 48 flag2=1; 49 } 50 51 } 52 53 if(flag2==0) 54 printf("NULL"); 55 56 printf("\n"); 57 58 59 } 60 61 62 63 return 0; 64 }
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/zqxLonely/p/4054661.html
總結(jié)
- 上一篇: (王道408考研操作系统)第四章文件管理
- 下一篇: 01背包问题--动规