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
- JAVA-2.4-鸡兔同笼
- java 鸡兔同笼问题
- java 鸡兔同笼问题
- 鸡兔同笼 java代码
- java学习之鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- 鸡兔同笼
- what's this? 浅谈js中this的指向问题
- spring上传
- NBUT 1221 Intermediary(Bellman-Ford)(最短路三进制状态压缩)
- 【ML】48个机器学习开源项目链接
- STL源码剖析学习笔记之具备次配置力(sub-allocation)的SGI空间配置器
- JAVA-2.4-鸡兔同笼
- hdu 1892 See you~
- Android App耗电发热分析
- Linux面试题集锦三
- Idea Intellij多线程调试
- 高并发的epoll+线程池,epoll在线程池内
- 十大软件测试工具
- HDOJ 2818 Building Block (带权并查集)
- web前端学习随笔