首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

joj:1011 If only I had a Venn diagram-求集合的差集

2012-12-24 
joj:1011 If only I had a Venn diagram--求集合的差集1011: If only I had a Venn diagramResultTIME Lim

joj:1011 If only I had a Venn diagram--求集合的差集

1011: If only I had a Venn diagram
ResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGEjoj:1011 If only I had a Venn diagram-求集合的差集3s524288K38421528Standard/*关键思路是找两个集合的差集两种方法。。*/#include <stdio.h>int a[100];int b[100];int res[100];/*选择排序*/void sortBySelect2(int *array,int len){for(int i=0;i<len - 1;i++){int t = 0;int tmp;for(int j=i;j<len;j++){if(array[j] < array[i]){t = j;tmp = array[i];array[i] = array[t];array[t] = tmp;}}}}/*错误的选择排序*/void sortBySelect(int *array,int len){for(int i=0;i<len - 1;i++){int t = 0;int tmp;for(int j=i;j<len;j++){if(array[j] < array[i])t = j;}tmp = array[i];array[i] = array[t];array[t] = tmp;}}/*两个元素中的相同元素被设置成 -1,除去两个集合中的相同元素,剩下的就是不同元素*/void reversDifference(int len1,int len2){int i;for(i=0;i<len1;i++){for(int j=0;j<len2;j++){if(a[i] == b[j]){a[i] = -1;b[j] = -1; }}}int k = 0;i = 0;for(i=0;i<len1;i++){if(a[i] == -1)continue;res[k] = a[i];k++;}for(i=0;i<len2;i++){if(b[i] == -1)continue;res[k] = b[i];k++;}if(k == 0){printf("{}\n");return;}sortBySelect2(res,k);printf("{");for(i=0;i<k-1;i++)printf("%d,",res[i]);printf("%d}\n",res[i]);}/*这种思路是找两个集合的不同元素,得找两次所以的两次双重循环*/void difference(int len1,int len2){int k = 0;int i;for(i=0;i<len1;i++){int j;for(j=0;j<len2;j++){if(a[i] == b[j])break;}if(j >= len2){res[k] = a[i];k++;}}for( i=0;i<len2;i++){int j;for( j=0;j<len1;j++){if(b[i] == a[j])break;}if(j >= len1){res[k] = b[i];k++;}}for(int m=0;m<k;m++)printf("%d,",res[m]);printf("}\n");}int main(){int time;scanf("%d",&time);for(int k=0;k<time;k++){int i = 0;while(scanf("%d",&a[i]),a[i])i++;int j = 0;while(scanf("%d",&b[j]),b[j])j++;//difference(i , j );reversDifference(i,j);}return 0;}

?

热点排行