样例过了但一片红和三十分的看这里。

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

感谢,终于知道哪里错了
by cheat13 @ 2023-11-17 22:14:55


还是不对,加了检测了 ```cpp int main() { int n; int count = 0; int num[100] = { 0 }; int used[2][100] = { 0 }; cin >> n; for (int i = 0; i < n; i++) { cin >> num[i]; } for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (num[j] == num[i]) { continue; } for (int k = 0; k < n; k++) { if (num[i] + num[j] == num[k]) { bool flag = true; for (int p = 0; p < count; p++) { if (num[i] == used[0][p] || num[i] == used[1][p]) { if (num[i] == used[0][p] && num[j]==used[1][p]) { flag = false; break; } else if (num[i] == used[1][p] && num[j] == used[0][p]) { flag = false; break; } } } if (flag) { used[0][count] = num[i]; used[1][count] = num[j]; count++; } } } } } cout << count; return 0; } ```
by cheat13 @ 2023-11-17 22:30:56


@[cheat13](/user/1104415) 这个可以过你说的,但还是过不了用例
by cheat13 @ 2023-11-17 22:32:46


@[cheat13](/user/1104415) 我用你代码显示编译错误。 你的意思是过得了我给的数据但过不了样例吗? 如果是这样应该是你迭代所有数字组合的部分有问题。 因为这题只考虑前两个数的和而不考虑顺序,所以(1,2)和(2,1)是等价的,只需要其中一个。 但(1,2)和(2,1)实际上会被当成不同的元组,所以数量会错误。
by Operation0701 @ 2023-11-18 13:44:05


@[Operation0701](/user/1170071) 是的,能过你的样例,你说的我也解决了,如果1+2=3存在过,我存起来1和2,如果再出现1和2这个组合,无论1是i还是j,都不会加次数
by cheat13 @ 2023-11-18 17:32:55


不知道你是样例几出了问题,你可以把错的样例数据发给我,然后我打表出所有组合和你对比一下。
by Operation0701 @ 2023-11-18 18:51:39


@[cheat13](/user/1104415) 这么长?
by _buzhidao_ @ 2023-12-06 19:28:35


@[Operation0701](/user/1170071) 非常感谢 **lz**,终于想明白了
by oyq784580 @ 2023-12-10 16:47:03


谢谢lz!!
by guoshuminhhh @ 2023-12-11 15:15:00


感谢感谢
by August16 @ 2023-12-12 13:15:52


| 下一页