请告诉我鸡兔同笼的逻辑 今天的作业是关于这个的,百度了 没找到资料。晚上要交 呜呜
这也能百度不到,我一秒钟就给你找了一个
http://blog.csdn.net/imlanbin/article/details/19822691
不会编程不要紧,但是请起码学习下怎么百度
可以把笼子看做是个类,里面有好多属性,而鸡和兔是两个由笼子根据不同的属性实例化出的对象。
不知道用面向对象解释可以不。
如果是问算法逻辑拿,那百度应该很多吧。
穷举法两个循环解决。第一个循环代表鸡第二个代表兔
每次判断是否符合
恩 这个可以,要学会用工具,百度很好用的
http://blog.csdn.net/imlanbin/article/details/19822691
鸡兔同笼,共有head个头,foot个脚,问鸡、兔各多少只?
分析:鸡的头数*2=鸡的脚数
兔的头数*2*2=兔的脚数
那么,脚的总数-头的总数*2=???显然,等于的是兔子比鸡多的脚数,而一只兔比一只鸡多了2只脚,所以兔子数是(脚的总数-头的总数*2)/2,问题迎刃而解。代码如下:
package thinking;
import java.util.Scanner;//导包
public class MyThinking {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//创建键盘录入对象
System.out.println("请输入 头数");
int head = sc.nextInt();//接收键盘录入数据
System.out.println("请输入 脚数");
int foot = sc.nextInt();//接收键盘录入数据
int RabbitNum = (foot - 2*head)/2;
int ChickenNum = head - RabbitNum;
if (RabbitNum>=0&&ChickenNum>=0) {
System.out.println("鸡的个数是"+ChickenNum);
System.out.println("兔子的个数是"+RabbitNum);
}else{
System.out.println("你输入的数据有误");
}
}
}
当然也可以像下边这样写,但是我倾向于第一种方法,因为编程更多的是注重思维能力,如果可以通过逻辑思考找出简单易行的方法,为何不用呢?
package thinking;
import java.util.Scanner;//导包
public class Mythinking2 {
static int chickenNum,rabbitNum;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//创建键盘录入对象
System.out.println("请输入 头数");
int head = sc.nextInt();//接收键盘录入数据
System.out.println("请输入 脚数");
int foot = sc.nextInt();//接收键盘录入数据
boolean flag = chickenAndRabbit(head,foot);
if (flag) {
System.out.println("鸡的个数是"+chickenNum);
System.out.println("兔子的个数是"+rabbitNum);
}else {
System.out.print("您输入的数据有误");
}
}
public static boolean chickenAndRabbit(int head, int foot){
boolean flag = false;
for (int i = 0; i <= head; i++) {
int j = head - i;
if (i*2+j*4 == foot) {
flag = true;
chickenNum = i;
rabbitNum = j;
}
}
return flag;
}
}
在数据不是很大的时候,最粗暴的方法,两个for循环,暴力求解。