这是我AC的代码
#include<bits/stdc++.h>
using namespace std;
int a[105], b[100005]; //b是个桶
int main(){
int n, ans = 0;
scanf("%d", &n);
for(int i = 1; i <= n; ++i){
scanf("%d", &a[i]);
b[a[i]] = 1;
}
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j){
if(i != j){
if(b[a[i] + a[j]] == 1){
++ans;
b[a[i] + a[j]] = 0;
}
}
}
}
printf("%d", ans);
return 0;
}
这是我90分的代码
#include<bits/stdc++.h>
using namespace std;
int a[105], b[10005];
int main(){
int n, ans = 0;
scanf("%d", &n);
for(int i = 1; i <= n; ++i){
scanf("%d", &a[i]);
b[a[i]] = 1;
}
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j){
if(i != j){
if(b[a[i] + a[j]] == 1){
++ans;
b[a[i] + a[j]] = 0;
}
}
}
}
printf("%d", ans);
return 0;
}
可以看出,我只不过是将b[100005]改成了b[10005]就会在#2RE
但是在题目描述中又说到测验题给出的正整数大小不超过10,000
为此,我下载了#2的数据
然后我发现,本来在开头位置的100 6094变成了1006094
也不知道是不是因为这个导致的RE
球球各位大佬看看是什么情况吧