题解:P2141 [NOIP2014 普及组] 珠心算测验
· 阅读需 1 分钟
解题思路
数据范围非常小,完全可以直接三层循环枚举。每次用一个布尔类型的数组存有没有算出过,这样来防止重复算。
在最后统计输出答案即可。
时间复杂度 ,可以通过此题。
AC Code
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,a[1000],ans=0;
bool t[20005];
cin>>n;
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=20005;i++)t[i]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){//&&j!=k&&i!=k
if((a[i]+a[j]==a[k])&&i!=j){
//cout<<i<<" "<<j<<endl;
if(t[a[i]+a[j]])ans++;
t[a[i]+a[j]]=0;
}
}
}
}cout<<ans;
return 0;
}