杭电2034——人见人爱A-B
#include <stdio.h> #include <algorithm> using namespace std; int main () { int a[110],b[110],c[110]; int m,n; int i,j,k; int flag; scanf("%d%d",&m,&n); while (m!=0||n!=0) { k = 0; flag = 0; for (i=0;i<m;i++) scanf("%d",&a[i]); for (i=0;i<n;i++) scanf("%d",&b[i]); for (i=0;i<m;i++) { for (j=0;j<n;j++) if (a[i]==b[j]) break; if (j>=n) { c[k] = a[i]; k ++; flag = 1; } } sort(c,c+k); if (flag) { for (i=0;i<k;i++) printf("%d ",c[i]); printf("\n"); } else printf("NULL\n"); scanf("%d%d",&m,&n); } return 0; }
这是我写杭电上题目的时候提交次数最多的时候。我不敢相信我为什么一直错人见人爱A-B。
今天终于搞掉了这么一题。
说说这题的思路吧。
正确的输入,程序的结束:m!=0 || n!=0;而不是m!=0&&n!=0 ;
找到数据,记录下来。随后输出,输出前需要排序。
我一直出错的原因就是这个排序,之前没有看清题目,后来加上sort库函数排序,我用C语言提交,怎么都是编译错误,不知道什么时候突然一亮想起来应该是C++。就是因为这个。