zoukankan      html  css  js  c++  java
  • 一本通 1267:【例9.11】01背包问题

    01背包问题

    经典的01背包问题模板

    这里提供两种做法:

    #include <iostream>
    #include <cstdio>
    using namespace std;
    //Mystery_Sky
    //二维01背包模板 
    #define M 1000
    int f[M][M], ans;
    int v, m, c[M], w[M];
    int main() {
    	scanf("%d%d", &v, &m);
    	for(int i = 1; i <= m; i++) scanf("%d%d", &c[i], &w[i]);
    	for(int i = 1; i <= m; i++)	
    		for(int j = 0; j <= v; j++) {
    			if(j >= c[i]) f[i][j] = max(f[i-1][j], f[i-1][j-c[i]]+w[i]);
    			else f[i][j] = f[i-1][j];			
    		}
    
    	printf("%d
    ", f[m][v]);
    	return 0;
    }
    

    #include <iostream>
    #include <cstdio>
    using namespace std;
    //Mystery_Sky
    //一维01背包模板 
    #define M 1000
    int f[M], c[M], w[M];
    int ans, v, m;
    int main() {
    	scanf("%d%d", &v, &m);
    	for(int i = 1; i <= m; i++) scanf("%d%d", &c[i], &w[i]);
    	for(int i = 1; i <= m; i++)
    		for(int j = v; j >= c[i]; j--) {
    			f[j] = max(f[j], f[j-c[i]]+w[i]);
    		}
    	printf("%d
    ", f[v]);
    	return 0;
    }
    
    唯愿,青春不辜负梦想,未来星辰闪耀
  • 相关阅读:
    ASP.NET
    ASP.NET
    MSSQL
    ASP.NET
    HTML+CSS+JS
    HTML+CSS
    ASP.NET、WinForm、C#
    MSSQL
    WinFrom
    线性代数应该这样学一
  • 原文地址:https://www.cnblogs.com/Benjamin-cpp/p/10840974.html
Copyright © 2011-2022 走看看