用java语言编程:把一元钞票换成一分、二分、五分硬币(每种至少一枚),有多少种换法?

Python055

用java语言编程:把一元钞票换成一分、二分、五分硬币(每种至少一枚),有多少种换法?,第1张

for(int i=1i<=100i++)

{

for(int j=1j<=50j++)

{

for(int k=1k<=20k++)

{

if(i*1+j*5+k*2==100)

System.out.println("1元钞票可以换为"+i+ "枚1分硬币和"+j+"枚2分硬币和"+k+ "枚5分硬币\n")

}

}

}

只有一堆硬币  而且甲先手的话    直接让甲一次过把硬币取完就能保证胜利了。

public class Main {

public static void main(String[] args) {

int m = 12

boolean isJia = true

while (true) {

m = m - m

if (m <= 0) {

break

} else {

isJia = false

}

}

System.out.println((isJia ? "甲" : "乙") + "取得了最后一个硬币.他胜利了.")

}

}

import java.util.ArrayList

/*

* 一元钱硬币有多少种表达方式

* 可供选择:1分,2分,5分,1角,2角,5角,1元

* 如:

* 1元=1元

* 1元=5角+5角

* ....

*/

public class Test {

private static int count

public static void main(String args[]){

int max = 100//一元

int[] cents = {100,50,20,10,5,2,1}//币值

String[] money = {"1元","5角","2角","1角","5分","2分","1分"}

ArrayList collect = new ArrayList()

collectMoney(cents, money,0, max, 0, collect)

System.out.println("总共有"+count+"种搭配方法!")

}

public static void collectMoney(int[] cents,String[] money,int beginIndex,int max,int result,ArrayList collect){

if(result>=max){

if(result==max){

count++

System.out.print("1元=")

for(int i=0i<collect.size()i++){

System.out.print(money[(Integer) collect.get(i)])

if(i<collect.size()-1){

System.out.print("+")

}

}

System.out.println()

}

return

}

for(int i=beginIndexi<cents.lengthi++){

int cent = cents[i]

collect.add(i)

collectMoney(cents, money,i, max, result+cent, collect)

collect.remove(Integer.valueOf(i))

}

}

}