3624 01背包

Memory 828K

Time 422MS

#include <iostream>using namespace std;//最大价值 3402 * 100 = 340200 在int范围内int num[2][12881];int w[3403];//重量int v[3403];//价值int flag;int main(){int n,m;cin >> n >> m;for(int i = 0; i < n; ++i){cin >> w[i] >> v[i];}for(int i = w[0]; i <= m; ++i){num[flag][i] = v[0];}for(int i = 1; i < n; ++i){for(int j = 0; j <= m; ++j)num[!flag][j] = num[flag][j];for(int j = w[i]; j <= m; ++j){num[flag][j] = max(num[!flag][j-w[i]]+v[i],num[!flag][j]);}}cout << num[flag][m] << endl;return 0;}

Memory 5372K

Time 3204MS

import java.io.IOException;import java.util.Scanner;public class Main {static int[][] num = new int[2][12881];static int[] w = new int[3403];//重量 static int[] v = new int[3403];//价值 static int flag = 0;public static void main(String[] args) throws IOException{//最大价值 3402 * 100 = 340200 在int范围内Scanner cin = new Scanner(System.in);int n,m;n = cin.nextInt();m = cin.nextInt();for(int i = 0; i < n; ++i){w[i] = cin.nextInt();v[i] = cin.nextInt();}for(int i = w[0]; i <= m; ++i){num[flag][i] = v[0];}for(int i = 1; i < n; ++i){for(int j = 0; j <= m; ++j)num[flag+1][j] = num[flag][j];for(int j = w[i]; j <= m; ++j){num[flag][j] = Math.max(num[flag+1][j-w[i]]+v[i],num[flag+1][j]);}}System.out.println(num[flag][m]); }}

,吃水不忘挖井人。

3624 01背包

相关文章:

你感兴趣的文章:

标签云: