算法日记之01背包问题

it2025-02-16  4

#include<stdio.h> #include <iostream> using namespace std; #define W 21 #define N 6 int a[N][W] = {0}; void backpage(){ int w[] = { 0,2,3,4,5,9 }; int v[] = { 0,3,4,5,8,10 }; for (int k = 1; k < N; k++) for (int C = 1; C < W; C++) { if (w[k] > C) a[k][C] = a[k - 1][C]; else { int value1 = v[k]+a[k-1][C-w[k]]; int value2 = a[k - 1][C]; if (value1 > value2) a[k][C] = value1; else { a[k][C] = value2; } } } } int main() { backpage(); for (int in = 0; in < N; in++) { for (int wn = 0; wn < W; wn++) { std::cout << a[in][wn] << " "; } std::cout << endl; } //cout << a[5][20]; return 0; }
最新回复(0)