输入的数不一定是有序的
3 7 2 5 8 2 3 4 8 6 7 5
你的程序运行这个case就有问题。
还有漏了排序了吧。
以下是我AC的代码(C语言的,我不习惯用C++)
#include
int main()
{
int n = 0, m = 0, count = 0, i = 0, j= 0;
int *a = NULL, *b = NULL, *sta = NULL;
while(EOF != scanf("%d %d", &n, &m) && (0 != n || 0 != m))
{
a = (int*)malloc(sizeof(int) * n);
b = (int*)malloc(sizeof(int) * m);
sta = (int*)malloc(sizeof(int) * n);
if(NULL == a || NULL == b || NULL == sta)
{
return (-1);
}
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
sta[i] = 1;
}
for(i = 0; i < n; i++)
{
for(j = i + 1; j < n; j++)
{
if(a[j] < a[i])
{
a[i] ^= a[j] ^= a[i] ^= a[j];
}
}
}
count = n;
for(i = 0; i < m; i++)
{
scanf("%d", &b[i]);
for(j = 0; j < n; j++)
{
if(b[i] == a[j])
{
sta[j] = 0;
count--;
}
}
}
if(0 == count)
{
printf("NULL\n");
}
else
{
for(i = 0; i < n; i++)
{
if(1 == sta[i])
{
printf("%d ", a[i]);
}
}
printf("\n");
}
free(a);
free(b);
a = NULL;
b = NULL;
}
return 0;
}