0
点赞
收藏
分享

微信扫一扫

蓝桥杯-砝码称重

芭芭蘑菇 2022-03-18 阅读 61

示例运行过程

import java.util.Scanner;

class Main{
    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] a = new int[n+1];
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            a[i] = scan.nextInt();
            sum+=a[i];
        }
        int[][] dp = new int[n+1][sum*2+1];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= sum; j++) {
                dp[i][j] = dp[i-1][j];
                if(dp[i][j] == 0){
                    if(j == a[i])
                        dp[i][j] = 1;
                    //判定的值与当前选择的砝码相等
                    if(dp[i-1][j+a[i]] == 1)
                        dp[i][j] = 1;
                    //检查当前i砝码与上一个状态(之前组合出的值)放在不同侧,是否可以组成j。
                    if(dp[i-1][Math.abs(j-a[i])] == 1)
                        dp[i][j] = 1;
                    //检查当前i砝码与上一个状态(之前组合出的值)放在同一侧,是否可以组成j。
                }
            }
        }
        int ans = 0;
        for (int i = 1; i <= sum; i++) {
            if(dp[n][i] == 1)
                ans++;
        }
        System.out.println(ans);
    }
}
举报

相关推荐

砝码称重 蓝桥杯

【python】砝码称重 蓝桥杯

蓝桥杯 砝码称重A组F题

B - 砝码称重

砝码称重dp

0 条评论