#20380: 遞迴的應用(0.4ms)


089487 (089487)

學校 : 國立臺灣師範大學附屬高級中學
編號 : 82069
來源 : [220.130.10.185]
最後登入時間 :
2024-04-01 11:16:18
a981. 求和問題 | From: [223.140.240.91] | 發表日期 : 2020-01-12 18:40

#include<bits/stdc++.h>
using namespace std;
void dfs(int n[],int pos,int m,bool f[],int t,bool &check)
{
if(m==0)
{
check=1;
for(int i=0;i<t;i++)
{
if(f[i]) cout<<n[i]<<" ";
}
cout<<"\n";
return ;
}
if(pos>=t) return ;
if(n[pos]>m) return ;
f[pos]=1;
dfs(n,pos+1,m-n[pos],f,t,check);//選擇此數
f[pos]=0;
dfs(n,pos+1,m,f,t,check);//不選此數
return ;
}
int main()
{
int t,m;
bool check=0;
while(cin>>t>>m)
{
int n[t];
for(int i=0;i<t;i++) cin>>n[i];
sort(n,n+t);
//vector<int> ans;
bool f[t];
memset(f,0,sizeof(f));
dfs(n,0,m,f,t,check);
if(!check) cout<<-1<<"\n";
}
}

 
ZeroJudge Forum