回溯法之子集和问题

这篇博客介绍了使用回溯法解决子集和问题,通过人工智能的视角,深入浅出地讲解了算法的实现过程。教程适合零基础的学习者,风格风趣幽默,旨在吸引更多人加入人工智能的学习行列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               
/*  时间:2011-11-21  作者:xiaosi  题目:子集和问题*/#include<iostream>#include<cstdio>using namespace std;#define  M 100class SumOfSub{    friend  void sumofsub();    private:      void Backtrack(int t);      int count;      int n;      int c;      int cw;      int x[M];      int bestx[M];      int num[M];};void SumOfSub::Backtrack(int t){//搜索t第层    int i,j;    if(t>n)//到达叶子节点    {        if(cw == c&&count ==0)        {            count++;            for(i=1;i<=n;i++)            {                if(x[i]==1)                {                    printf("%d ",num[i]);                }            }            printf("\n");        }        return;    }    else    {        if(cw+num[t]<= c)        {            cw+=num[t];            x[t]=1;            Backtrack(t+1);            cw-=num[t];        }        x[t]=0;        Backtrack(t+1);    }}void sumofsub(){    int i,j;    SumOfSub s;    s.cw = 0;    s.count =0;    scanf("%d %d",&s.n,&s.c);    for(j=1;j<=s.n;j++)    {        scanf("%d",&s.num[j]);    }    for(j=1;j<=s.n;j++)    {        s.x[j]=0;    }    s.Backtrack(1);     if(s.count == 0)     {         printf("No Solution!");     }}int main(){    sumofsub();    return 0;}

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.youkuaiyun.com/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值