# include<iostream>
using namespace std;
int a[10000], n, t, b[10000] = {0}, z = 0;
int c[10000];
void print(int k)
{
int i;
z++;
for(i = 1; i <= k; i++)
{
cout<<c[i]<<" ";
}
cout<<endl;
}
int ff()
{
int i = 1, sum = 0, j = 1;
while(i > 0)
{
if(b[i] == 0)
{
b[i] = 1;
sum += a[i];
c[j] = a[i];
j++;
i++;
if(sum == t) return j;
if(sum > t)
{
sum -= a[i-1];
b[i-1] = 0;
j--;
}
if(i > n)
{
i = n - 1;
if(b[n] == 1)
{
sum -= a[n];
b[n] = 0;
j--;
}
while(b[i] == 0)
{
i--;
if(i < 0) return 0;
}
j--;
sum -= a[i];
b[i] = 0;
i++;
}
}
}
return 0;
}
int main()
{
int i, j, tol = 0;
cin>>n>>t;
for(i = 1; i <= n; i++)
{
cin>>a[i];
tol += a[i];
}
if(tol >= t)
{
j = ff();
if(j)
{
print(j-1);
}
else cout<<"No Solution!";
}
else cout<<"No Solution!";
return 0;
}
p-7-16子集和问题
猜你喜欢
转载自blog.csdn.net/qq_43192537/article/details/103681040
今日推荐
周排行