首页 > 编程知识 正文

动态规划01背包问题例题,01背包回溯算法

时间:2023-05-05 02:23:56 阅读:34839 作者:3089

intmax(inta,int b ) if (ab ) return a; else return b; }/** * [getAns求解方法] * @param s [背包容量] * @param n [项目数量] * @param w [存储项目重量的数组] * @param v [存储项目价值的数组//初始化最初的物品for (j=0; j=s; j ) ans[1][j]=w[1]=j? v[1]:0; for(I=2; i=n; I({intjmin=w[I]s? w[i]:s; //物品的重量大于容量时for(j=0; jjmin; j ) ans[i][j]=ans[i-1][j]; //物品的重量小于容量时for(j=w[I]; j=s; j () ans[I](j )=max ) ans[I-1][j],ans[I-1][j-w[I] ) v[I] ) ) ); } }返回ans [ n ] [ s ]; (}int main ) ) { int i,answer; int s; int n; printf (pleaseenterthecapacityofthebackpackandthenumberofitems: n ' ); scanf('%d%d ),s,n ); int w[n 1]; int v[n 1]; printf (pleaseentertheweightandvalueoftheiteminturn: n ); for(I=1; i=n; I )扫描(' % d % d )、w ) I )、v ) I ); answer=Getans(s,n,w,v ); printf (最大值: % d (n ),answer ); 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。