問題
コード
Java
1import java.util.Scanner; 2public class Anguish { 3 public static void main(String[] args){ 4 Scanner scan=new Scanner(System.in); 5 int W=scan.nextInt(); 6 int N=scan.nextInt(); 7 int K=scan.nextInt(); 8 int[] A=new int[N]; 9 int[] B=new int[N]; 10 for(int i=0;i<N;i++){ 11 A[i]=scan.nextInt(); 12 B[i]=scan.nextInt(); 13 } 14 int[][][] dp=new int[N+1][W+1][K+1]; 15 16 for(int i=0;i<=W;i++) dp[0][i][0]=0; 17 18 for(int i=0;i<N;i++){ 19 for(int j=0;j<=W;j++){ 20 for(int k=0;k<K;k++){ 21 if(j>=A[i]){ 22 if(dp[i][j-A[i]][k]+B[i]>dp[i][j][k]) dp[i+1][j][k+1]=dp[i][j-A[i]][k]+B[i]; 23 else dp[i+1][j][k]=dp[i][j][k]; 24 } 25 else dp[i+1][j][k]=dp[i][j][k]; 26 } 27 } 28 } 29 System.out.println(dp[N][W][K]); 30 } 31}
#質問内容
ナップサックの問題に追加で制限が付いた問題だったので、添え字を増やして計算していこうと思ってコードを書きました。エラーなどはなく,テストケースは通るのですが提出してみると不正解(WA)と正解(AC)が入り混じった結果となってしまいました。どのような部分がWAを出している可能性があるのかを教えていただければ幸いです。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/24 01:43
2020/05/24 03:04
2020/05/30 12:45