c语言代码:
实际上为背包问题变形,采用递归算法:
#include <stdlib.h>
#define N 1000
int data[N];
int isDePackaged(int sum,int next){
if(sum==0){
return 1;
}
if((sum>0||sum<0) && next ==0){
return 0;
}
//表示进入用data[next]的递归
if(isDePackaged(sum-data[next],next-1))return 1;
//表示进入不用data[next]的递归
return isDePackaged(sum,next-1);
}
int main(){
data[1]=1;
data[2]=3;
data[3]=5;
data[4]=7;
data[5]=9;
int result = isDePackaged(26,5);
printf("%s",result==1?"TRUE":"FALSE");
getchar();
}
本文介绍了一种解决背包问题的递归算法实现,并通过一个具体示例展示如何使用 C 语言来验证特定数值组合是否可以通过给定的一组数值实现。代码中定义了一个递归函数 isDePackaged 来检查总和是否可以由提供的数值集组成。
2809

被折叠的 条评论
为什么被折叠?



