这个题目 的描述,一言难尽,一开始只得了30分,后来,将测试数据下载,分析之后,才得满分。
#include<iostream>
#include<algorithm>
using namespace std;
int a[110];
int flag[10010];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int ans=0;
for(int i=n-1;i>=0;i--){
for(int j=0;j<=i-1;j++){
for(int k=j+1;k<=i-1;k++){
if(a[i]==a[j]+a[k]&& !flag[a[i]]) {
ans++;
flag[a[i]]=1;
// printf("%d+%d=%d\n",a[j],a[k],a[i]);
}
}
}
}
cout<<ans;
return 0;
}
原先的代码:
#include<iostream>
#include<algorithm>
using namespace std;
int a[110];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int ans=0;
for(int i=n-1;i>=0;i--){
for(int j=0;j<=i-1;j++){
for(int k=j+1;k<=i-1;k++){
if(a[i]==a[j]+a[k]&& !flag[a[i]]) {
ans++;
}
}
}
}
cout<<ans;
return 0;
}