主函数这样求救错哪了

P2141 [NOIP2014 普及组] 珠心算测验

`a[i] + a[j] == a[k] == 0` 是什么意思?
by ud2_ @ 2023-03-29 22:38:21


@[LorryWayn](/user/959750) `a[i]+a[j]==a[k]==0`???
by RP_INT_MAX @ 2023-03-29 22:41:38


@[ud2_](/user/206953) 后面那个忘记删了,但去掉了也不对
by LorryWayn @ 2023-03-29 23:17:40


@[RP_INT_MAX](/user/566289) 后面那个忘记删了,但去掉了也不对
by LorryWayn @ 2023-03-29 23:17:59


@[LorryWayn](/user/959750) 考虑输入 `3 3 2 1`。
by ud2_ @ 2023-03-29 23:24:52


@[ud2_](/user/206953) 你说的我大概明白了,按照网上别人的改成这样了但有点不懂,为什么i从1开始,k从1开始,为什么只考虑a[i]+a[j]=a[k]而不是a[j]+a[k]=a[i]啊 for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ for(int k=1;k<=n;k++){ if(a[i]+a[j]==a[k]&&vk[k]==0&&k!=i&&k!=j){ cnt++; vk[k]=1; //v判重,0代表未标记 } } }
by LorryWayn @ 2023-03-30 08:57:40


@[ud2_](/user/206953) 哦哦哦我明白了,但我还是不知道他为什么数组从1开始,那不就最后多出来一个并且没有啊a[0]了吗。
by LorryWayn @ 2023-03-30 09:20:43


@[LorryWayn](/user/959750) > 为什么只考虑 `a[i] + a[j] = a[k]` 而不是 `a[j] + a[k] = a[i]` `i`, `j` 用来遍历每一对数,而 `k` 用来遍历可能的和。 > 为什么 `i` 从 1 开始,`k` 从 1 开始 很多算法的伪代码中下标从 1 开始,直译到 C 就成这样了。这不是好习惯但确实方便。
by ud2_ @ 2023-03-30 10:26:56


@[ud2_](/user/206953) 明白了,感谢
by LorryWayn @ 2023-03-30 11:23:23


|