|
- #include <iostream>
- using namespace std;
- int n,x,a[20]= {0,1,2};
- void pr()
- {
- if (a[n]==100)
- {
- for(int i=1; i<=n; i++)
- cout<<a[i]<<' ';
- cout<<endl;
- n--;///精妙的一句!!!
- }
- }
- bool canp(int i,int k)
- {
- bool b=0;
- for(int j1=1; j1<=i-1; j1++)
- for(int j2=1; j2<=i-1; j2++)
- if (a[j1]+a[j2]==k) b=1;
- return b;
- }
- void dfs(int i) /// 找第i个数
- {
- if(i>=n+1) pr();
- else
- for(int k=a[i-1]+1; k<=2*a[i-1]; k++)
- if(canp(i,k))
- {
- a[i]=k;
- dfs(i+1);
- }
- }
- int main()
- {
- x=100;
- n=20;
- dfs(3);
- return 0;
- }
复制代码 |
|