Problem 31

问题描述:

In England the currency is made up of pound, £, and pence, p, and there are eight coins in general circulation:

1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).

It is possible to make £2 in the following way:

1 ×£1 + 1 ×50p + 2 ×20p + 1 ×5p + 1 ×2p + 3 ×1p

How many different ways can £2 be made using any number of coins?

解决问题:

可以使用若干个for循环计算

  for(int i=0;i<=2;i++){ //100
  for(int j=0;j<=4;j++){ //50
  for(int k=0;k<=10;k++){ //20
  for(int l=0;l<=20;l++){ //10
  for(int m=0;m<=40;m++){ //5
  for(int n=0;n<=100;n++){ //2
  int t = 200 - i*100 - j*50 - k*20 - l*10 - m*5 - n*2;
  if(t>=0 ){
  ++index;
  }
  }
  }
  }
  }
  }
  }

最好使用动态规划递归来计算,然后再使用非递归形式。

  

	private static int[] coinValue = { 200, 100, 50, 20, 10, 5, 2 };
	public static int count = 0;
	
	public static void total(int level, int remain){
		
		if(remain>=0){
			count++;
		}else{
			return ;
		}
		int i=level ;
		for(; i<7; i++){
			total(i, remain - coinValue[i]);
		}
	}

猜你喜欢

转载自to-zoe-yang.iteye.com/blog/1151387
31
31)