JAVA-2.4-鸡兔同笼

趣味思考
  鸡兔同笼,共有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;          
    }      
}  

  明显第二种方法代码冗长,效率也不够高。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值