背包递归问题,错解
#include<stdio.h>#define N 5typedef struct node{ int value; int size;}Item;Item s[N];int knpa(int cap);int main(){ int i,cap; printf("背包容量:"); scanf("%d", &cap); printf("每个物品的大小与价值:\n"); for (i = 0; i < N; i++) scanf("%d %d", &s[i].size, &s[i].value); printf("max=%d\n", knpa(cap)); return 0;}int knpa(int cap)//递归背包函数{ int i,max,space,t; max = 0; for (i = 0; i < N; i++) { if ((space = cap - s[i].size) >= 0) { if ((t = knpa(space) + s[i].value) > max) max = t; } } return max;}