正文
硬币的Java代码 硬币兑换问题c语言
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
java编写:计算一元钱硬币有多少种表达方
import java.util.ArrayList;
/*
* 一元钱硬币有多少种表达方式
* 可供选择:1分硬币的Java代码,2分硬币的Java代码,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+"种搭配方法硬币的Java代码!");
}
public static void collectMoney(int[] cents,String[] money,int beginIndex,int max,int result,ArrayList collect){
if(resultgt;=max){
if(result==max){
count++;
System.out.print("1元=");
for(int i=0;ilt;collect.size();i++){
System.out.print(money[(Integer) collect.get(i)]);
if(ilt;collect.size()-1){
System.out.print("+");
}
}
System.out.println();
}
return;
}
for(int i=beginIndex;ilt;cents.length;i++){
int cent = cents[i];
collect.add(i);
collectMoney(cents, money,i, max, result+cent, collect);
collect.remove(Integer.valueOf(i));
}
}
}
Java硬币题?
//硬币类
public class Coin {
private int head = 1;
private int tail = 0;
private int result;
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
public Coin(){
result = 1;
}
public void throwCoin(){
int random = (int) (Math.random() * 10 / 5);
if(head == random){
result = head;
}else{
result = tail;
}
}
public int getHead() {
return head;
}
public void setHead(int head) {
this.head = head;
}
public int getTail() {
return tail;
}
public void setTail(int tail) {
this.tail = tail;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Coin coin = new Coin();
coin.throwCoin();
if(coin.getResult() == coin.getHead()){
System.out.println("You Win.");
}else if(coin.getResult() == coin.getTail()){
System.out.println("You Lose.");
}
}
}
帮我写一个简单的java程序吧,关于抛硬币的··· 要求随机抛20次,结果按顺序写出来, 谢谢了
public class Throwcoin {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
for (int i = 1; i = 20; i++) {
int j = (int) (Math.random() * 2);
if (j == 0) {
System.out.println("第"+i+"次抛硬币硬币的Java代码:硬币正面朝上");
} else {
System.out.println("第"+i+"次抛硬币硬币的Java代码:硬币反面朝上");
}
}
}
}
java 硬币1,1,2,2,4,4,8,8.支付n元有多少种方法 java
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map.Entry;
import java.util.Scanner;
public class Test {
static HashSetInteger[] resultSet = new HashSetInteger[]();//存放结果
static HashMapInteger, Integer coinsMap;//将硬币分类 种类——数量
static int max = 0;
public static void main(String[] args) throws IOException {
int coins[] = {1,1,2,2,4,4,8,8};//硬币集合
// Scanner sc = new Scanner(System.in);
// int n = sc.nextInt();//输入n硬币的Java代码的值
int n = 16;
count(coins, n);
System.out.println();
System.out.println(resultSet.size());
/* 输出结果 每种硬币的数量*/
for(Integer[] ints : resultSet){
int i = 0;
for(EntryInteger, Integer entry : coinsMap.entrySet()){
System.out.println("coins:" + entry.getKey() + " num:" + ints[i++] );
}
System.out.println();
}
}
/**
* 将硬币归类并统计每类的数量
* @param coins
* @param n
* @throws IOException
*/
public static void count(int[] coins, int n) throws IOException{
coinsMap = new HashMapInteger,Integer();
for(int i = 0;i coins.length;i ++){
int count = 0;
if(coinsMap.containsKey(coins[i])){
count = coinsMap.get(coins[i]);
}
++ count;
max += coins[i];
coinsMap.put(coins[i], count);
}
Integer[][] pool = new Integer[coinsMap.size()][2];
int index = 0;
for(EntryInteger, Integer entry: coinsMap.entrySet()){
pool[index][0] = entry.getKey();
pool[index][1] = entry.getValue();
index ++;
}
if(n max){
System.out.println("超过所以硬币总额");
}
else{
recursive(pool, 0, 0, n,new Integer[pool.length]);
}
}
/**
* 利用递归的方式求硬币的组合
* @param pool
* @param coin
* @param sum
* @param n
* @param result
* @throws IOException
*/
public static void recursive(Integer[][] pool,int coin,int sum,int n,Integer result[]) throws IOException{
if(coin == pool.length){//已经考虑了所以种类的硬币时硬币的Java代码,结束递归
return;
}
int tSum = sum;
for(int i = 0;i = pool[coin][1];i ++){
int temp = i * pool[coin][0];
tSum = sum + temp;
Integer[] _result = new Integer[pool.length];
for(int j = 0; j coin;j ++){
_result[j] = result[j];
}
_result[coin] = i;
// for(int k = 0;k coin;k++) System.out.print(" ");
// System.out.println("coin:"+pool[coin][0] + " num:"+ i + " " + sum + "_" + tSum + " " );
if(tSum == n coin == pool.length - 1){//已经考虑到最后一种硬币类型且硬币组合的面值与n相等
resultSet.add(_result);
// System.out.println("here is an answer");
}
else{
recursive(pool, coin + 1, tSum, n, _result);
}
}
}
}
好久没写这种的,写了好久。如有不对,欢迎指正!
硬币的Java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于硬币兑换问题c语言、硬币的Java代码的信息别忘了在本站进行查找喔。