/*
* 现有四种面值的邮票,分别为1,4,12,21(分)
* 现从中最多任意取5张,求取出这些邮票的最大连续组合值/
*/
package cn.jzsz;
public class huawei {
static int num=5,M=5;
static int k;
static boolean find;
static int Logo[]=new int[num];
static int Stamp[]={0,1,4,12,21};
//在剩余的张数n组合出面值和Value
public static boolean Comable(int n,int Value){
if(n>=0 && Value==0){
find = true;
int Sum = 0;
for(int i=0;i
Sum=Sum+Stamp[Logo[i]];
System.out.print(Stamp[Logo[i]]+",");
}System.out.println("总数为:"+Sum);
}else{
for(int i=1;i0;i++){
if(Value - Stamp[i]>=0){
Logo[k++]=i;
Comable(n-1,Value - Stamp[i]);
Logo[--k]=0;
}
}
}return find;
}
public static void main(String[] args) {
for(int i=1;Comable(num,i);i++,find=false);
}
}
/*输出是:
1,总数为:1
1,1,总数为:2
1,1,1,总数为:3
1,1,1,1,总数为:4
1,1,1,1,1,总数为:5
1,1,4,总数为:6
1,1,1,4,总数为:7
1,1,1,1,4,总数为:8
1,4,4,总数为:9
1,1,4,4,总数为:10
1,1,1,4,4,总数为:11
4,4,4,总数为:12
1,4,4,4,总数为:13
1,1,4,4,4,总数为:14
1,1,1,12,总数为:15
1,1,1,1,12,总数为:16
1,4,4,4,4,总数为:17
1,1,4,12,总数为:18
1,1,1,4,12,总数为:19
4,4,4,4,4,总数为:20
1,4,4,12,总数为:21
1,1,4,4,12,总数为:22
1,1,21,总数为:23
1,1,1,21,总数为:24
1,1,1,1,21,总数为:25
1,1,12,12,总数为:26
1,1,1,12,12,总数为:27
1,1,1,4,21,总数为:28
1,4,12,12,总数为:29
1,1,4,12,12,总数为:30
1,1,4,4,21,总数为:31
4,4,12,12,总数为:32
1,4,4,12,12,总数为:33
1,4,4,4,21,总数为:34
1,1,12,21,总数为:35
1,1,1,12,21,总数为:36
1,12,12,12,总数为:37
1,1,12,12,12,总数为:38
1,1,4,12,21,总数为:39
4,12,12,12,总数为:40
1,4,12,12,12,总数为:41
1,4,4,12,21,总数为:42
1,21,21,总数为:43
1,1,21,21,总数为:44
1,1,1,21,21,总数为:45
1,12,12,21,总数为:46
1,1,12,12,21,总数为:47
1,1,4,21,21,总数为:48
1,12,12,12,12,总数为:49
1,4,12,12,21,总数为:50
1,4,4,21,21,总数为:51
4,12,12,12,12,总数为:52
4,4,12,12,21,总数为:53
4,4,4,21,21,总数为:54
1,12,21,21,总数为:55
1,1,12,21,21,总数为:56
12,12,12,21,总数为:57
1,12,12,12,21,总数为:58
1,4,12,21,21,总数为:59
12,12,12,12,12,总数为:60
4,12,12,12,21,总数为:61
4,4,12,21,21,总数为:62
21,21,21,总数为:63
1,21,21,21,总数为:64
1,1,21,21,21,总数为:65
12,12,21,21,总数为:66
1,12,12,21,21,总数为:67
1,4,21,21,21,总数为:68
12,12,12,12,21,总数为:69
4,12,12,21,21,总数为:70
4,4,21,21,21,总数为:71*/