JAVA-2.4-鸡兔同笼

来源:互联网 发布:网络棋牌作弊器 编辑:程序博客网 时间:2024/06/05 03:19

趣味思考
  鸡兔同笼,共有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 0
原创粉丝点击