爆破:
1.
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000)。
现在给你这六种砝码的数量,请你计算用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。
如输入:1 1 0 0 0 0
输出:Total=3 表示可以称出1g,2g,3g三种不同的重量。
2.
每个测试文件只包含一组测试数据,每组输入六个整数,例如:
输入 a1 a2 a3 a4 a5 a6
(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)
3.
对于每组输入数据,输出 Total=N。(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int arr[] = new int[]{0,1,2,3,5,10,20};
int num[] = new int[7];
int Max=1001;
int top=0;
int weight[] = new int[Max];
for(int i=1;i<=6;++i) {
num[i] = in.nextInt();
top+=num[i]*arr[i];
// System.out.println(top);
}
int count=0;
for(int i=0;i<=num[1];++i)
{
for(int j=0;j<=num[2];++j)
{
for(int k=0;k<=num[3];++k)
{
for(int l=0;l<=num[4];++l)
{
for(int m=0;m<=num[5];++m)
{
for(int o=0;o<=num[6];++o)
{
int sum=i*arr[1]+j*arr[2]+k*arr[3]
+l*arr[4]+m*arr[5]+o*arr[6];
weight[sum]=1;
// System.out.println("x");
}
}
}
}
}
}
for(int i=1;i<=top;++i)
{
if(weight[i]==1)
{
count+=1;
}
}
System.out.println("Total="+count);
}
}