Java:最大スコア取得(明示)

6077 ワード

質問する



に答える

  • 以前のコイン交換の問題と同様に,発色アルゴリズムを用いて解いた.
  • この問題は、数の限られた問題から最大点数を抽出するために、1つの問題ごとに採点する必要があります.
  • 硬貨硬貨は硬貨の個数を無制限に設定し、硬貨を追加し続けて硬貨の個数を求めることができるが、問題は一旦解けばこれ以上解けないので、考えながら解くことである.
  • jは後から、繰り返し使用しなくてもよい.
  • おしゃべり

  • インフラストラクチャ最終問題
  • 完全なコード

    package inflearn;
    
    import java.util.Scanner;
    
    public class I1006 {
    	static int n, m, ans = 0;
    
    	public static void main(String[] args) {
    
    		Scanner sc = new Scanner(System.in);
    		n = sc.nextInt();
    		m = sc.nextInt();
    
    		int[] dy = new int[m + 1];
    		for (int i = 0; i < n; i++) {
    			int score = sc.nextInt();
    			int time = sc.nextInt();
    
    			for (int j = m; j >= time; j--) {
    				dy[j] = Math.max(dy[j], dy[j - time] + score);
    				ans = Math.max(ans, dy[j]);
    			}
    		}
    
    		System.out.println(ans);
    	}
    }