2024-06-14 09:43:38 | 我爱编程网
import java.util.Random;
import java.io.*;
public class MatchGame {
private Random rnd = new Random ();
private int total;
private boolean yourTurn;
private boolean youWin;
public MatchGame () {
this.total = this.rnd.nextInt(15) + 20;
}
public MatchGame (boolean youFirst) {
this();我爱编程网
this.yourTurn = yourTurn;
}
public void takeAway (boolean yourTurn) {
int n = 0;
if (yourTurn) {
System.out.print("Your turn! How many matches do you want to take? ");
try {
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
n = Integer.parseInt (br.readLine());
} catch (IOException ioe) {}
if (n < 1 || n > 3) {
System.out.println("You can only take 1~3 matches for each time.");
takeAway (yourTurn);
return;
}
} else {
n = this.rnd.nextInt(3) + 1;
System.out.println("The computer took " + n + " matches.");
}
this.total -= n;
if (this.total <= 0) {
if (yourTurn)
System.out.println("You win!");
else
System.out.println("You lose!");
} else {
takeAway (!yourTurn);
}
}
public static void main (String args[]) {
new MatchGame ().takeAway (true);
}
}
/**
* 四人玩火柴棍游戏,每一次都是三个人赢,一个人输。输的人要按赢者手中的火柴 数进行赔偿,即赢者手中有多少根火柴棍,输者就赔偿多少根。现知道玩过四次后,
* 每人恰好输过一次, 而且每人手中都正好有16根火柴。问此四人做游戏前手中各有 多少根火柴? 编程解决此问题
* 我的理解
* 1.4个人最后的火柴数都为16 则4个人其实并没有太多主体的概念。4个人可以是任何人 要辨别4个人可以假设。
* A 是第四轮输的人 B是第三轮输的人 C是第二轮输的人 D是第一轮输的人
* 2.依据以上判断我们可以反过来理解为 4个的初始状态分别为16 16 16 16 每一次都是三个人输,一个人赢,输的人把自己的一半给赢的一方
*
*/
public class Game {
public static void main(String[] a) {
int n1 = 16, n2 = 16, n3 = 16, n4 = 16;
// 第4轮
n1 += (n2 + n3 + n4) / 2;
n2 /= 2;
n3 /= 2;
n4 /= 2;
// 第3轮
n2 += (n1 + n3 + n4) / 2;
n1 /= 2;
n3 /= 2;
n4 /= 2;
// 第2轮
n3 += (n1 + n2 + n4) / 2;
n1 /= 2;
n2 /= 2;
n4 /= 2;
// 第1轮
n4 += (n1 + n2 + n3) / 2;
n1 /= 2;
n2 /= 2;
n3 /= 2;
System.out.println("四人做游戏前手中各有 a:" + n1 + " b:" + n2 + " c:" + n3 + " d:" + n4);
}
}
“设计这个程序的原理图是什么”是产生20--50根火柴的原理,还是取胜原理?我理解是取胜原理吧!还有“拿到最后一根为胜”是最后拿到一根,还是最后拿完就行?我理解是最后拿到一根为胜,如果最后把三根或二根一起拿了,不行。
按照我的理解,推导如下:
用反推法:欲拿最后一根,必须留2根在那里,欲留2根,必须上一轮留2+3+1=6给对方,(它拿一,你拿三,它拿二,你拿二,它拿三,你拿一。都是留2根)。再向上一轮,就是6+4=10。
取胜原理:把随机产生的火柴数,分解成:2+4的n次方+m,(m≤3),当m=0的时候,后取者胜,当m=1、2、3的时候,先取者胜。先取者取完m,留2+4的n次方给对方,对方不管取多少,你取的数和对方相加等于4,一直到最后,留2根给对方,根据规则,对方只能取一根,留一根给你取胜。
另:取完者胜(含最后一根):最后留4根给对方,不管对方取多少,你都可以一次取完。上一轮同样加4。
取胜原理:把随机产生的火柴数,分解成:4的n次方+m,(m≤3),当m=0的时候,后取者胜,当m=1、2、3的时候,先取者胜。先取者取完m,留4的n次方给对方,对方不管取多少,你取的数和对方相加等于4,一直到最后,留4根给对方。
python怎么随机产生一个范围内的数python怎么随机产生一个范围内的数?python生成指定区间内的一个随机数,所用的模块和方法:推荐:《python教程》random.randrage()的基本语法:导入random模块获取区间内随机数,使用random.randrange()保存文件,查看获取的区间内随机数以上就是小编分享的关于python怎么随机产生一
14,783的的立方根?手算:因为25³=15625>14783>24³=13824所以14783的立方根在24到25之间机算:如图使用python输入14783**(1/3)得到24.54261637383651(箭头1)经验算,成立,误差可接受(箭头2)输入10个数,输出对应的立方根python程序>>>
我想了解下,学会python一般能找到拿工资多少的工作1、Web开发:python有很多优秀的web开发框架,比如Flask、Django、Bootstar等,可以帮助你快速搭建一个网站。需要一个新功能时,用python只需要几行代码就可以了,受到很多初创公司喜欢。现在像知乎、豆瓣、小米这样大厂,最早网站都是python搭建的,像国外YouTube、Quora、Reddit、Inst
python自动生成插画-python怎么根据数据生成图像如何用python画五一海报要用Python画五一海报,需要用到Python的绘图库,比如matplotlib、Pillow等。以下是一个简单的例子,演示如何使用Python和Pillow库来制作五一海报:fromPILimportImage,ImageDraw,ImageFont#创建一个空白的画布,大小为800x
JAVA乱码根本原因是什么右键点击乱码文件,选preferenses,看看resource里的编码是不是正确,如果不是utf-8就改成utf-8,如果是utf-8的话你改成别的编码试试看看,然后把正常状态下的内容复制出来,在把文件改成utf-8后把文件复制进去Win7系统打开java文件出错显示乱码如何解决很多程序人员都会使用java程序写文件,只有成功运行java程序文件显示正确结果
Java中计算器的程序importjava.awt.*;importjava.awt.event.*;importjava.lang.*;importjavax.swing.*;publicclassCounterextendsFrame{//声明三个面板的布局GridLayoutgl1,gl2,gl3;Panelp0,p1,p2,p3;JTextFiel
java程序的运行过程?Java程序的运行过程步骤如下:1、需要使用Java编程语言编写程序,使用Java编译器(例如javac)将Java源代码(.java文件)编译成字节码(.class文件)。2、使用Java虚拟机(JVM)来执行编译后的字节码,JVM会为程序分配内存,包括堆内存(用于存储对象)和栈内存(用于存储局部变量和方法调用)。3、JVM的垃圾回收器会自动回收不再
小码王少儿编程教育:小孩子也能轻松入门的编程语言编程语言是未来的趋势,而小孩子也能轻松入门。本文将为大家介绍几种适合小孩子学习的编程语言,让孩子们在有趣的过程中掌握编程思维。🐱Scratch编程语言Scratch编程语言由麻省理工出品,6岁孩子就能照着例子完整地摆出一个能运行的程序。无需认识英文或汉字,通过涂鸦、录音、找图片等有趣过程,潜移默化地掌握编程思维。🐍Python编程
2024-04-13 00:38:12
2024-03-31 15:14:06
2024-03-21 00:22:13
2024-02-10 22:15:59
2023-12-26 22:10:45
2023-12-21 16:29:16