这是codechef问题的link-厨师和娃娃
为什么我的代码总是输出错误的答案?输出应该是没有匹配的数字,但是我的代码总是打印第一个元素。没有正确的条件,条件应该是什么?
问题陈述
厨师是成对的粉丝,他喜欢成对出现的所有事物。他甚至有一个洋娃娃收藏品,其中所有洋娃娃都配对过。一天,在浏览他的收藏品时,他发现洋娃娃数量奇多。有人偷了一个洋娃娃!!!
帮助厨师找到缺少的洋娃娃类型。
输入 第一行包含测试用例的数量。 输入的第二行包含数组中元素的数量。 接下来的n行是剩下的每个娃娃的类型。
输出 查找没有配对的娃娃的类型
示例 输入:
1
3
1
2
1
输出: 2
#include <stdio.h>
int main(){
int t, N, i, m, k, z, flag=0;
scanf("%d", &t);
while(t--)
{
scanf("%d",&N);
int arr[N];
for(i=0;i<N;i++){
scanf("%d", &arr[i]);
}
int j;
for(j=0;j<N;j++){
m=arr[j];
for(k=0;k<N;k++){
if(m==arr[k] && k!=j)
{
flag=0;
}
else
{
flag=1;
break;
}
printf("%d", m);
}
}
}
return 0;
}
答案 0 :(得分:1)
您每次[Container prompt] ls -l /content/datalab
都会跳出循环。您必须检查每个数组成员是否存在于数组的其他位置。
k==j
但是要小心,因为这仅在数组成员中有重复项时才会出现。您可能要检查数组中是否有偶数个元素。
如果要检查哪些数组成员出现奇数次
#include <stdio.h>
int main()
{
int t, N, i, j, k, m, z, flag;
scanf("%d", &t);
while(t--)
{
scanf("%d",&N);
int arr[N];
for(i=0;i<N;i++)
{
scanf("%d", &arr[i]);
}
for(j=0;j<N;j++)
{
m=arr[j];
flag=1;
for(k=0;k<N;k++)
{
if(m==arr[k] && k!=j)
{
flag=0;
}
}
if(flag)
{
printf("%d\n", m);
}
}
}
return 0;
}