鸡兔同笼问题
鸡兔同笼问题最早记载在《孙子算经》中,原文是这样子的
今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?
问题很简单也很有趣
正常的做法:设两个未知数,联立方程求解
鸡的数量x,兔的数量y
由题目列式:
x+y=35
2x+4y=94
然后解方程就好啦
那么如果用java语言要怎么做呢?看这里!
整体代码:
import java.util.Scanner;//通过Scanner类来获取用户的输入public class XiaoJiuCai{static void JiTuTongLong(int head,int foot,int[]Tu,int[]Ji){Tu[0]=(foot-2*head)/2;Ji[0]=head-Tu[0];}//定义JiTuTongLong()方法public static void main(String[]args)//主方法{int[] Ji={0},Tu={0};int head,foot;System.out.println("鸡兔同笼问题java语言求解");System.out.println("输入头数:");Scanner input=new Scanner(System.in);//使用Scanner类创建一个对象head=input.nextInt();//input对象调用方法(函数)nextInt(),方法执行造成堵塞,等待用户输入(这里是头数)System.out.println("输入脚数:");foot=input.nextInt();//这里是输入脚数JiTuTongLong(head,foot,Tu,Ji);//调用JiTuTongLong()方法System.out.printf("鸡有:%d只,兔有:%d只",Ji[0],Tu[0]);}}
其中所用到的代码知识不多,但思路逻辑很重要,以下归纳是一些杂七杂八的归纳,及鸡兔同笼算法的思路分析
import java.util.Scanner;//通过Scanner类来获取用户的输入
因为要用到输入这一操作,故这里是导入java.util包下的Scanner类
public class XiaoJiuCai{static void JiTuTongLong(int head,int foot,int[]Tu,int[]Ji){Tu[0]=(foot-2*head)/2;Ji[0]=head-Tu[0];}//定义JiTuTongLong()方法
这里注意,如果一个类声明的时候使用了public class 进行了声明,则类名称必须与文件名称完全一致。
Scanner input=new Scanner(System.in);
这里是使用Scanner类创建一个对象,对象名为input。
head=input.nextInt();
这里对象调用方法,方法这里用到的是int整数型。
System.out.printf("鸡有:%d只,兔有:%d只",Ji[0],Tu[0]);
这里%d是占位符
划重点啦!以下是这个问题的代码设计思路
兔子和鸡,两种小动物在问题里存在一个相同特征和一个不同特征,兔子的jiojio是小鸡的两倍,于是我们可以先假定笼子里都是小鸡,那么就是一个头对应两只脚,但这个问题脚的只数是多出来的,故可以看成,剩余的脚是兔子另外的两只脚(目前另两只被我们算给了小鸡)我们把剩余的脚数除以二,就知道了兔子的数量,由于头数一定,总头数减去兔子的头数自然就是小鸡正确的数量。java就此思路设计,先定义JiTuTongLong()方法作为运算方法,然后定义主方法(代码运行起点)在其中引导用户输入问题条件,随后调用设计好的运算方法解决,最终打印出结果。
嗯,鸡兔同笼问题就先解答到这里,后续发现新大陆会进行补充,也欢迎大家指正补充,算法是活的。