版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41668547/article/details/86561482
【问题描述】
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重≤1000≤1000)
【输入格式】
a1a1 a2a2 a3a3 a4a4 a5a5 a6a6
(表示1g砝码有a1a1个,2g砝码有a2a2个,…,20g砝码有a6a6个)
【输出格式】
Total=NN
(NN表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
【样例输入】
1 1 0 0 0 0
【样例输出】
Total=3
【样例说明】
可以称出1g,2g,3g三种不同的重量。
【数据规模和约定】
总重≤1000
=================================================
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int a[] = new int [6];
for (int i = 0; i < a.length; i++) {
a[i] = scan.nextInt();
}
int sum = a[0]*1 + a[1]*2 + a[2]*3 + a[3]*5 + a[4]*10 + a[5]*20;
int s[] = new int[sum+1];
int m = 0;
for (int i = 0; i <= a[0]; i++) {
for (int j = 0; j <= a[1]; j++) {
for (int j2 = 0; j2 <= a[2]; j2++) {
for (int k = 0; k <= a[3]; k++) {
for (int k2 = 0; k2 <= a[4]; k2++) {
for (int l = 0; l <= a[5]; l++) {
s[i*1 + j*2 + j2*3 + k*5 + k2*10 + l*20] = 1;
}
}
}
}
}
}
int ans = 0;
for (int i = 0; i < s.length; i++) {
if(s[i] == 1) {
ans++;
}
}
System.out.println("Total="+(ans-1));
}
}