题目:
蒜头君给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。比如,对于数列1 2 3 4,这个问题的答案就是 2,因为 3 = 2 + 1, 4 = 1 + 3。
输入格式:
共两行,第一行是数列中数的个数 n ( 1<n<100),第二行是由 n 个不大于 10000 的正整数组成的数列,相邻两个整数之间用单个空格隔开。
输出格式:
一个整数,即数列中等于其他两个数之和的数的个数。
input
4
1 2 3 4output
2
这道题相对简单,看到数据范围在100以内我决定用3层for循环,为了防止一个数可以有多种组合而形成,我引入了数组b,用过一次后就标记一次,a数组始终不变,让它慢慢循环吧。
一个break 打破一层循环。写出来后心情舒畅,记之。
ac代码:
#include<stdio.h> int main() { int n; scanf("%d",&n); int a[110]; int b[110]; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); b[i]=a[i]; } int ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { for(int k=1;k<=n&&k!=j;k++) { if(a[k]+a[j]==b[i]) { ans++; b[i]=10010; break; break; } } } } printf("%d\n",ans); return 0; }