思路:这个与前面的稍微有点区别,就是它的重复的个数是给定的,所以在做多项式相乘是注意控制别超了个数就行了。
<pre name="code" class="java">import java.util.*;
class Main{
public static void main(String args[]){
final int MAX=8010;
int []price={1,2,5};
Scanner sc=new Scanner (System.in);
while(sc.hasNext()){
int []coin=new int[3];
int max=0;
for(int i=0;i<3;i++){
coin[i]=sc.nextInt();
}
if(coin[0]+coin[1]+coin[2]==0){
break;
}
max=coin[0]+coin[1]*2+coin[2]*5;
int []result=new int[MAX];
int []change=new int[MAX];
for(int i=0;i<=coin[0];i++){
result[i]=1;
}
for(int i=1;i<3;i++){
for(int j=0;j<=max;j++){
for(int k=0;k+j<=max&&k/price[i]<=coin[i];k+=price[i]){
change[j+k]+=result[j];
}
}
for(int j=0;j<=max;j++){
result[j]=change[j];
change[j]=0;
}
}
for(int i=0;i<=max+1;i++){
if(result[i]==0){
System.out.println(i);
break;
}
}
}
}
}