牛客网真题-77-考试策略

考试策略

http://www.nowcoder.com/questionTerminal/a1792d443f914f2b928d2a157cd7900d

0-1背包问题

package org.niuke.solution77;

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[] p = new int[n + 1];
        int[] a = new int[n + 1];
        int[] q = new int[n + 1];
        int[] b = new int[n + 1];
        for(int i = 1; i <= n; i++){
            String[] line = br.readLine().split(" ");
            p[i] = Integer.parseInt(line[0]);
            a[i] = Integer.parseInt(line[1]);
            q[i] = Integer.parseInt(line[2]);
            b[i] = Integer.parseInt(line[3]);
        }

        //        int[][] dp=new int[n+1][121];
        //        for(int i=1;i<=n;i++){
        //            for(int j=0;j<=120;j++){
        //                dp[i][j]=dp[i-1][j];
        //                if(j>=p[i]) dp[i][j]=Math.max(dp[i][j],dp[i-1][j-p[i]]+a[i]);
        //                if(j>=q[i]) dp[i][j]=Math.max(dp[i][j],dp[i-1][j-q[i]]+b[i]);
        //            }
        //        }
        //        System.out.println(dp[n][120]);

        int[] dp = new int[121];
        for(int i = 1; i <= n; i++){
            for(int j = dp.length - 1; j >= 0; j--){
                if(j >= p[i]){
                    dp[j] = Math.max(dp[j], dp[j - p[i]] + a[i]);
                }
                if(j >= q[i]){
                    dp[j] = Math.max(dp[j], dp[j - q[i]] + b[i]);
                }
            }
        }
        System.out.println(dp[120]);
    }
}
全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务