题解:P2141 [NOIP2014 普及组] 珠心算测验
题目思路
直接暴力枚举即可。但需要注意一些问题。
- 两个相加的数的位置必须不同。
- 两个相加的数都与原数的位置不同。
明确了这些问题后,我们就可以写出代码了。具体思路见代码。
代码
注:本代码仅供参考。
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[105],ans;
bool f;
int main(){
//输入
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
//枚举
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
f=false;
if(i==j||j==k||i==k){ //如果位置相同,则跳过
continue;
}
if(a[j]+a[k]==a[i]){ //如果可行,答案个数 +1,随后直接退出循环
ans++;
f=true;
break;
}
}
if(f==true){
break;
}
}
}
printf("%d\n",ans); //输出答案
return 0;
}
后记
更多内容,请移步至