gpt4 book ai didi

C - 异或循环 - Kattis - Oddmanout

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:59 26 4
gpt4 key购买 nike

我是编程新手。我正在学习 XOR 以尝试在 Kattis 上解决类作业问题的 oddmanout 问题。

我正在尝试的是在一系列数字中找到奇怪的人。除一个号码外,每个号码都有一对。我必须找到没有的号码。我下面的代码应该对数组中的每个数字进行异或以找到那个“奇怪的人”。

但是,由于我不知道为什么 XOR 会输出错误的答案,所以我在这个网站上发帖,寻求帮助。

我的输入是:

3
3
1 2147483647 2147483647
5
3 4 7 4 3
5
2 10 2 10 5

我的输出是:

Case #1: 3
Case #2: 4
Case #3: 4

我希望得到:

Case #1: 1
Case #2: 7
Case #3: 5

预先感谢您的帮助!

我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(){
int N,i,n,j,a=0,num=1;
int guest[1000],cas[16];
scanf("%d",&N);

printf("N is: %d\n",N);

while(N!=0){
scanf("%d",&n);
j=0;

printf("n is: %d\n",n);

for(i=0;i<n;i++){
scanf("%d",&guest[i]);
j=j^i;

printf("guests are: %d\n",guest[i]);
}

printf("j is: %d\n",j);

cas[a]=j;
a++;
N--;

printf("N is: %d\n a is: %d\n",N,a);

}


for(i=0;i<a;i++){
printf("Case #%d: %d\n",num,cas[i]);
num++;
}

return 0;
}

最佳答案

正如 user3528438 在评论中提到的,您的行 j=j^i; 应该是 j=j^guest[i];。您想要与您输入的数组成员进行异或,而不是与数组的索引。

您应该养成尽早注释代码的习惯,并为变量命名以使代码更易于阅读。它可以更容易地发现这样的错误,并且如果您稍后必须返回到您的代码,也会省去您的心痛。

关于C - 异或循环 - Kattis - Oddmanout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com