社区讨论
到底有没有人会啊
学术版参与者 8已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mi7wv1ji
- 此快照首次捕获于
- 2025/11/21 04:55 4 个月前
- 此快照最后确认于
- 2025/11/21 04:55 4 个月前
本人其他OJ 70分代码
CPP#include <iostream>
using namespace std;
int n,c,a[10008];
int dfs(int y,int step,int k,int w[10008])
{
int i;
if(k<0)return 0;
if(k==0)
{
for(i=1;i<step;++i)cout<<w[i]<<' ';
return 1;
}
for(i=y+1;i<=n;++i)
{
w[step]=a[i];
if(dfs(i,step+1,k-a[i],w)==1)return 1;
}
return 0;
}
int main()
{
int i,w[10008];
cin>>n>>c;
for(i=1;i<=n;++i)
cin>>a[i];
if(dfs(0,1,c,w)==0)cout<<"No solution";
return 0;
}
子集和问题的一个实例为〈S,t〉。其中,S={ x1, x2,…, xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得子集S1和等于c。 对于给定的正整数的集合S={ x1, x2,…, xn}和正整数c,编程计算S 的一个子集S1,使得子集S1和等于c。
输入描述 Input Description
第1行有2个正整数n和c,n表示S的个数,c是子集和的目标值。接下来的1 行中,有n个正整数,表示集合S中的元素。
输出描述 Output Description
程序运行结束时,将子集和问题的解输出。当问题无解时,输出“No solution!”。
样例输入 Sample Input
5 10
2 2 6 5 4
样例输出 Sample Output
2 2 6
数据范围及提示 Data Size & Hint
n <= 10000
回复
共 7 条回复,欢迎继续交流。
正在加载回复...