问题说明:
现在有八枚银币abcdefg,已知其中一枚是假币,其重量不同于真币,但不知道是轻还是重,如何用天平以最小的比较次数决定出那个是假币,并得知假币是比真币轻还是重。
public class Coins {
private int[] coins;
public Coins() {
coins = new int[8];
for(int i = 0; i < 8; i++)
coins[i] = 10;
}
public void setFake(int weight) {
coins[(int) (Math.random() * 7)] = weight;
}
public void fake() {
if(coins[0]+coins[1]+coins[2] ==
coins[3]+coins[4]+coins[5]) {
if(coins[6] > coins[7])
compare(6, 7, 0);
else
compare(7, 6, 0);
}
else if(coins[0]+coins[1]+coins[2] >
coins[3]+coins[4]+coins[5]) {
if(coins[0]+coins[3] == coins[1]+coins[4])
compare(2, 5, 0);
else if(coins[0]+coins[3] > coins[1]+coins[4])
compare(0, 4, 1);
if(coins[0]+coins[3] < coins[1]+coins[4])
compare(1, 3, 0);
}
else if(coins[0]+coins[1]+coins[2] <
coins[3]+coins[4]+coins[5]) {
if(coins[0]+coins[3] == coins[1]+coins[4])
compare(5, 2, 0);
else if(coins[0]+coins[3] > coins[1]+coins[4])
compare(3, 1, 0);
if(coins[0]+coins[3] < coins[1]+coins[4])
compare(4, 0, 1);
}
}
protected void compare(int i, int j, int k) {
if(coins[i] > coins[k])
System.out.print("\n假币 " + (i+1) + " 较重");
else
System.out.print("\n假币 " + (j+1) + " 较轻");
}
public static void main(String[] args) {
if(args.length == 0) {
System.out.println("输入假币重量(比10大或小)");
System.out.println("ex. java Coins 5");
return;
}
Coins eightCoins = new Coins();
eightCoins.setFake(Integer.parseInt(args[0]));
eightCoins.fake();
}
}
分享到:
相关推荐
该问题要求找出8枚银币中唯一一枚重量不同的假币,并确定它是比真币重还是轻,同时尽可能减少称量的次数。以下是对这个问题的详细解析: 1. **问题概述**: - 假设有8枚银币,已知其中一枚是假币,其重量与其余7枚...
- **继承与多态**:如果"Coins"涉及到不同类型的硬币(如金币、银币),可能会有继承关系,同时利用多态性实现通用操作。 2. **数据结构与算法**: - **集合框架**:Java的ArrayList或LinkedList可能用于存储和...
8. 八枚银币(Eight Coins) 八枚银币是一个经典的组合优化问题。问题描述是:给定八枚银币,每枚银币的面值不同,如何使用这些银币组合成某个面值的硬币。解决这个问题的关键是使用动态规划算法,使用动态规划来...
硬币之间存在等价关系,1个金币等于8个银币,1个银币等于64个铜币。这样的比例设定使得货币体系更加平衡,同时也方便玩家进行计算和交易。硬币袋则可以用来存储这些硬币,一个硬币袋相当于9个金币的价值,这为玩家...
8. **八枚银币(Eight Coins Puzzle)**:类似于八皇后问题,但在一个3×3的棋盘上放置8枚硬币,每行每列至少有一枚。解决这类问题通常需要深入理解回溯法和递归。 9. **生命游戏(Conway's Game of Life)**:一个著名...
语言:English 许多国际金银币的价值 许多国际金银币的价值。 每个硬币都显示在照片中,并进行了充分描述:大小,贵金属重量,成色等。对于每个硬币,价格的每日更新以欧元,美元和gbp给出。 一些链接显示实际上在...
8. 八枚银币问题(Eight Coins Puzzle):类似于八皇后问题,但用银币和硬币的重量差异来增加难度,需要找到一个平衡的解决方案。 9. 生命游戏(Conway's Game of Life):一种元胞自动机,展示了简单的规则如何...
八枚银币(Eight Coins Puzzle)和生命游戏(Conway's Game of Life)是两个不同类型的谜题。前者涉及排列问题,后者是著名的细胞自动机,它们都展现了规则简单但行为复杂的系统。 字符串匹配(String Matching)...
7. **八枚银币(Coins)**:通过二分查找或平衡天平策略来找出假币,确定其轻重。最小化比较次数是关键。 8. **生命游戏(Life Game)**:生命游戏是一种元胞自动机,使用迭代规则更新细胞状态。可以使用二维数组模拟...
许多国际金银铸币的价值。 许多国际金银币的价值。 每个硬币都显示在照片中,并进行了充分描述:大小,贵金属重量,成色等。对于每个硬币,价格的每日更新以欧元,美元和gbp给出。 一些链接显示实际上在eBay上出售的...
8. 八枚银币(Eight Coins Puzzle) 这可能是指用八枚硬币找出满足特定条件的排列,例如价值的排列或特定模式。 9. 生命游戏(Game of Life) 由数学家约翰·康威提出的细胞自动机模型,是一组在二维方格上进行迭代...