社区讨论

到底有没有人会啊

学术版参与者 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 条回复,欢迎继续交流。

正在加载回复...