1 条题解
-
0Guest LV 0
-
0
#include<bits/stdc++.h>
using namespace std;
int ans[10000],n,c;
bool v[10000];
bool dfs(int n)
{
int p=0,sum=0;
while(p>=0)
{
if(!v[p])
{
v[p]=1;
sum=sum+ans[p];
if(c==sum) return 1;
else if(c<sum)
{
v[p]=0;
sum=sum-ans[p];
}
p++;
}
if(p>n)
{
while(v[p-1])
{
p--;
v[p]=0;
if(p<1) return 0;
}
while(!v[p-1])
{
p--;
if(p<1)
{
return 0;
}
}
sum=sum-ans[p-1];
v[p-1]=0;
}
}
return 0;
}
int main()
{
cin>>n>>c;
for(int i=0;i<n;i++)
{
cin>>ans[i];
}
if(dfs(n))
{
int k=1;
for(int i=0;i<n;i++)
{
if(v[i])
{
if(k)
{
k=0;
}
else
{
cout<<" ";
}
cout<<ans[i];
}
}
}
else
cout<<"No Solution!";
return 0;
}
- 1
信息
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 60
- 已通过
- 13
- 通过率
- 22%
- 上传者