首页 > 编程语言 > 详细

算法---动态规划

时间:2019-11-08 15:19:13      阅读:80      评论:0      收藏:0      [点我收藏+]

------------恢复内容开始------------

关于动态规划法,我怎么觉得就是蛮力法,有时候比蛮力法看起来还复杂

1.0/1背包问题

目前存在的问题,可能可以忽视?技术分享图片

 

 

#include<iostream>
#include<algorithm>
using namespace std;
int KnapSack(int w[], int v[], int n, int c);
int main()
{
 int w[6] = { 0,2,2,6,5,4 };
 int v[6] = { 0,6,3,5,4,6 };
 int n = 5, c = 10;
 cout << KnapSack(w, v, n, c) << endl;
}
int KnapSack(int w[], int v[], int n, int c) {
 int i, j;int V[6][11] = { {0} };
 int x[6];
 for (i = 0;i <= n;i++) {
  V[i][0] = 0;
 }
 for (j = 0;j <= c;j++) {
  V[0][j] = 0;
 }
 for (i = 1;i <= n;i++) {
  for (j = 1;j <= c;j++) {
   if (j < w[i]) {
    V[i][j] = V[i - 1][j];
   }
   else {
    V[i][j] = max(V[i - 1][j], V[i - 1][j - w[i]] + v[i]);
   }
  }
 }
  for (j = c, i = n;i > 0;i--) {
   if (V[i][j] > V[i-1][j]) {
    x[i] = 1;j = j - w[i];
   }
   else x[i] = 0;
  }
 return V[n][c];
}

------------恢复内容结束------------

算法---动态规划

原文:https://www.cnblogs.com/zlshy/p/11820399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!