- int a[25],visit[25],sum,sum1,n,flag;
- void DFS(int location)
- {
- if(flag==1) // 找到之后按层依次返回
- return;
- if(sum<=sum1)
- {
- if(sum==sum1)
- {
- flag=1;
- cout<<"YES"<<endl;
- for(int i=0;i<n;i++)
- if(visit[i]==1) // 选中标记的输出
- cout<<a[i]<<" ";
- cout<<endl;
- }
- return;
- }
- for(int i=location;i<n;i++)
- {
- sum1+=a[i]; // 选中第 i 个元素
- visit[i]=1; // 标记第 i 个元素
- DFS(i+1); // 向下搜索
- sum1-=a[i]; // 不选第 i 个元素
- visit[i]=0; // 解除标记
- }
- }
来源: http://www.bubuko.com/infodetail-2521485.html