嗯...
先看一下这个题:https://www.luogu.org/problemnew/show/P2141
这个题水到爆!!!
大体思路很好想,但是有细节...
思路:
因为是一个普及组的题,所以进行for的暴力即可
但是,这样只能A三个点,因为这样的话 1+2=3 和 2+1=3 被认为为两个答案,所以要用一个vis数组进行一个标记...
AC代码:
1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 int a[105]; 7 int cnt; 8 bool vis[105]; 9 int main(){ 10 int n; 11 scanf("%d", &n); 12 for(int i = 1; i <= n; i++){ 13 scanf("%d", &a[i]); 14 } 15 for(int i = 1; i <= n; i++){ 16 for(int j = 1; j <= n; j++){ 17 for(int k = j+1; k <= n; k++){ 18 if(vis[i] == 0)//注意标记,否则有重复 19 if(a[i] == a[j] + a[k]) cnt++, vis[i] = 1; 20 } 21 } 22 } 23 printf("%d",cnt); 24 return 0; 25 }