文章

6

粉丝

0

获赞

9

访问

313

头像
简单背包问题 题解:C语言递归解法
P1035
发布于2026年3月6日 11:54
阅读数 103

#include <stdio.h>
#include <stdlib.h>

int getRes(int s,int n,int wei[]){//每次递归只会尝试放入一个物品
    int i;
    for(i=0;i<n;i++){//放入一个物品就匹配成功
        if(s==wei[i]&&wei[i]>0){
            return 1;
        }
    }
    for(i=0;i<n;i++){
        if(s>wei[i]&&wei[i]>0){
            wei[i]=-wei[i];//负数表示已放入
            int res=getRes(s+wei[i],n-1,wei);//准备放入下一个
            if(res==1){
                return 1;
            }
            wei[i]=-wei[i];//复原
        }
    }
    return 0;
}

int main()
{
    int s,n,i,res;
    int wei[1000];
   ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发