还有三个WA

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

@[tttqqqq](/user/622722) 或许可以帮到你: ```c++ #include <iostream> using namespace std; int main() { int n; cin >> n; int num[105] = {}; for (int i = 0; i < n; ++i) cin >> num[i]; int count = 0; int check[105] = {}; for (int i = 0; i < n; ++i) for (int j = i + 1; j < n; ++j) for (int k = 0; k < n; ++k) if (num[i] + num[j] == num[k] && check[k] == 0) { ++count; check[k] = 1; } cout << count; return 0; } ```
by Jasper08 @ 2022-03-23 18:38:43


1.你找到一个符合条件的数,需要把他标记,不然会重复,见第4行和第15,17行; 2.建议你把13行和15行换一下,~~没有为什么~~; 3.把第2层循环的break删去。 ------------ ## AC代码: ```cpp #include <stdio.h> int s[100];//定义一个全局数组,保存是否被2个数相加得到; int main(){ int a,b[100],c=0,i,d,e,f,g; scanf("%d ",&a); for(i=0;i<a;i++) scanf("%d",&b[i]); for(d=0;d<a;d++) { for(e=d+1;e<a;e++) { for(f=0;f<a;f++) if(b[f]==b[d]+b[e]&&s[f]==0)//如果这个数没有被得到过,那就再判断,不然会重复; { s[f]=1;//标记得到; c++; break; } } } printf("%d",c); } ```
by mengtian_ @ 2022-03-23 19:03:28


~~我看了全评论区就你的题最简单...~~
by mengtian_ @ 2022-03-23 19:05:01


@[tttqqqq](/user/622722)
by mengtian_ @ 2022-03-23 19:06:11


|