⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knap2d.cpp

📁 数据结构c++语言描述 Borland C++实现
💻 CPP
字号:

#include<iostream.h>
#include<stdlib.h>
//next line needed in dos only
#include "dosmax.h"


template<class type>
void Knap2d(type *p, int *v, int *w, int c, int d, int n, type*** f)
{
//initialize f[n][][]
int y, z;
for (y = 0; y <= c; y++)
   for (z = 0; z <= d; z++)
      if (y < v[n] || z < w[n]) f[n][y][z] = 0;
      else f[n][y][z] = p[n];

//compute remaining f's
for (int i = n - 1; i >= 1; i--) {
   for (y = 0; y <= c; y++)
      for (z = 0; z <= d; z++)
         if (y < v[i] || z < w[i])
            f[i][y][z] = f[i+1][y][z];
          else f[i][y][z] =
               max(f[i+1][y][z], f[i+1][y-v[i]][z-w[i]] + p[i]);
   }
}

void main(void)
{
int p[6] = {0, 6, 3, 5, 4, 6};
int w[6] = {0, 2, 2, 6, 5, 4};
int v[6] = {0, 1, 3, 2, 4, 3};
int x[6];
int ***f;
int n = 5;
int c = 10, d = 12;
f = new int **[n+1];
int q, r;
for (q = 1; q <= n; q++) f[q] = new int *[c+1];
for (q = 1; q <= n; q++) 
   for (r = 0; r <= d; r++) f[q][r] = new int[d+1];
Knap2d(p,v,w,c,d,n,f);
cout << "Optimal value is ";
cout << f[1][c][d] << endl;
cout << "Rest of table is" << endl;
for (int i=2; i<=n; i++) {
   for (int j=0; j<=c; j++) {
      for (int k=0; k<=d; k++) cout << f[i][j][k] << ' ';
      cout << endl;}}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -