是她
主要是状态转移方程,例子在百度里搜动态规划会出来一堆这是0-1背包问题的程序#include int value[10];int weight[10];int d[10][200];bool b[10];#define max(X,Y) ((X)>(Y)?(X):(Y))int main(){ int n,c; scanf("%d%d",&n,&c); int i,j; for(i=1;i<=n;++i) { scanf("%d%d",&value[i],&weight[i]); b[i]=false; } for(i=1;i<=n;++i) { for(j=1;j<=c;++j) { if(weight[i]<=j) d[i][j]=max(d[i-1][j],d[i-1][j-weight[i]]+value[i]); else d[i][j]=d[i-1][j]; } } j=c; for(i=n;i>0;i--) { if(d[i][j]>d[i-1][j]) { b[i]=true; j=j-weight[i]; } } printf("选中的物品是:/n"); for(i=1;i<=n;i++) { if(b[i]) printf("%d ",i); } printf("/ntotal:%d",d[n][c]); } 
动态规划是一个算法设计思想。dijkstra算法是一个具体的算法,用到了动态规划思想。