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

📄 金明预算.cpp

📁 背包类问题浅析和一些背包类问题的解答源程序。
💻 CPP
字号:
#include <iostream>
using namespace std;

int main(){
    const int M = 70;
    int tot[M]={0}, price[M][3]={0}, value[M][3]={0}, n, m, v, p, q, i, j;
    bool zj[M]={0};
    const int N = 3210;
    int f[N]={0};
    cin >>n >>m;
    n /= 10;
    for( i=1; i<=m; ++i ){
         cin >>v >>p >>q;
         v /= 10;
         if( q ){
             ++tot[q];
             price[q][tot[q]] = v;
             value[q][tot[q]] = v * p ;
         }
         else{
             price[i][0] = v;
             value[i][0] = v * p ;
             zj[i] = true;
         }
    }
    
    for( i=1; i<=m; ++i )
         if( zj[i] ){
             for( j=n; j>=price[i][0]; --j ){
                  if( (p=f[j-price[i][0]]+value[i][0]) > f[j] ) f[j] = p;
                  if( (j>=price[i][0]+price[i][1])
                      && ( (p=f[j-price[i][0]-price[i][1]]+value[i][0]+value[i][1])>f[j]) )
                      f[j] = p;
                  if( (j>=price[i][0]+price[i][2])
                      && ( (p=f[j-price[i][0]-price[i][2]]+value[i][0]+value[i][2])>f[j]) )
                      f[j] = p;
                  if( (j>=price[i][0]+price[i][1]+price[i][2])
                      && ( (p=f[j-price[i][0]-price[i][1]-price[i][2]]+value[i][0]+value[i][1]+value[i][2])>f[j]) )
                      f[j] = p;
             }
         }
    
    cout <<f[n]*10 <<endl;
    system( "pause" );
    return 0;
}

⌨️ 快捷键说明

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