动态规划-FATE

在这里插入图片描述
Sample Input

10 10 1 10
1 1
10 10 1 9
1 1
9 10 2 10
1 1
2 2

Sample Output

0
-1
1
import java.util.*;

public class ll {
    public static void main(String[] args) {
        int []a=new int[110];
        int []b=new int[110];
        int [][]dp=new int[110][110];
        Scanner scanner=new Scanner(System.in);
        while(true) {
            int n=scanner.nextInt();
            int m=scanner.nextInt();
            int k=scanner.nextInt();
            int s=scanner.nextInt();
            for (int i =1; i <=k; i++) {
                a[i]=scanner.nextInt();
                b[i]=scanner.nextInt();
            }
            int ans=-1;
            for (int i = 1; i <=m; i++) {
                for (int j =1; j <=k; j++) {
                    for (int l = 1; l <=s; l++) {
                        if (i>=b[j]) {
                            dp[i][l]=Math.max(dp[i][l], dp[i-b[j]][l-1]+a[j]);
                        }
                    }
                }
                if (dp[i][s]>=n) {
                    ans=m-i;
                    break;
                }
            }
            System.out.println(ans);
        }
    }
}

发布了89 篇原创文章 · 获赞 42 · 访问量 3661

猜你喜欢

转载自blog.csdn.net/weixin_43673156/article/details/105169168