1 solutions
-
0
枚举()
- 分别枚举和,加数,被加数,判断是否符合条件,统计数目。
#include<bits/stdc++.h> using namespace std; const int N=110; int a[N]; int main() { int n; cin>>n; int cnt=0; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int k=1;k<=n;k++) //枚举和 { bool st=false; for(int i=1;i<=n;i++) //枚举加数 { for(int j=i+1;j<=n;j++) //枚举被加数 { if(a[i]+a[j]==a[k]) //找到一组合法解 { st=true; } } } if(st) //当前数可以被凑出来 { cnt++; } } cout<<cnt; return 0; }
枚举+标记()
- 枚举加数和被加数,标记所有的和,然后枚举所有的数,看是否被标记过。
#include<bits/stdc++.h> using namespace std; const int N=110,M=20010; int a[N],b[M]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) //枚举加数 { for(int j=i+1;j<=n;j++) //枚举被加数 { int x=a[i]+a[j]; b[x]=1; } } int cnt=0; for(int i=1;i<=n;i++) //枚举所有数 { if(b[a[i]]) //当前数能够被两个数累加得到 { cnt++; } } cout<<cnt; return 0; }
- 1
Information
- ID
- 445
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 10
- Tags
- # Submissions
- 6
- Accepted
- 3
- Uploaded By