1AC,9WA,C语言求助!

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

orz,期末考试前做题
by OldDriverTree @ 2023-01-05 13:51:12


@[UTAsriel](/user/825518) ```cpp #include<iostream> #include<cstdio> using namespace std; int t[200010],g[200010],a[110]; int main() { int n,ans = 0; cin >> n; for (int i = 1;i <= n;i++) { cin >> a[i]; g[a[i]] = 1; } for (int i = 1;i <= n - 1;i++) { for (int j = i + 1;j <= n;j++) { t[a[i] + a[j]]++; } } for (int i = 1;i <= 200000;i++) { if (t[i] && g[i]) ans++; } cout << ans << endl; return 0; } ```
by codejiahui @ 2023-01-05 14:05:16


@[guoxiangyu66](/user/681036) 反正是线上考,影响不大。
by UTAsriel @ 2023-01-05 16:32:22


@[codejiahui](/user/512407) 虽然这个代码不是C语言(C++应该不算吧?)的,但思路我明白了,感谢!
by UTAsriel @ 2023-01-05 16:36:49


@[codejiahui](/user/512407) ```C #include <stdio.h> #include <string.h> int sr[101],pd[20001],sj[20001]; int main(void){ int n,sc=0; scanf("%d\n",&n); for(int a=1;a<=n;a++){ scanf("%d ",&sr[a]); sj[sr[a]]=1; } for(int b=1;b<=(n-1);b++){ for(int c=(b+1);c<=n;c++){ pd[sr[b]+sr[c]]++; } } for(int d=1;d<=10000;d++){ if((sj[d]+pd[d])==2){//等同于sj[d]&&pd[d]==1 sc++; } } printf("%d",sc); return 0; } ``` 我用C语言做了一个原理一样的,可为什么还是不行?
by UTAsriel @ 2023-01-05 17:24:23


```cpp for(int d=1;d<=10000;d++){ if((sj[d]+pd[d])==2){//等同于sj[d]&&pd[d]==1 sc++; } } ``` 如果sj[d] == 0,pd[d] == 2呢? 把这里改了,或者把上面 ```cpp pd[sr[b]+sr[c]]++; ``` 改成: ``` pd[sr[b]+sr[c]]=1; ``` 应该都行
by codejiahui @ 2023-01-05 18:17:16


@[UTAsriel](/user/825518)
by codejiahui @ 2023-01-05 18:17:29


@[codejiahui](/user/512407) 感谢!已经A了!
by UTAsriel @ 2023-01-08 13:39:20


|