wanlifeipeng

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

计算机的优势: 计算速度

最笨的计算方法:

  • 直接枚举每种可能的情况
  • 情况属不是天文数字即可
  • 要做到不遗漏
  • 最好能不重复

 

实例:

1.鸡兔同笼

鸡兔共有50头,脚120只,问鸡兔各自的数量

public static void main(String[] args) {
        int headNum = 50;   //头的总数
        int footNum = 120;  //脚的总数
        for (int i = 0; i < headNum; ++i)
        {
            int j = headNum - i;
            if (2 * i + 4 * j == footNum)
            {
                System.out.println("鸡有"+i+"只,兔有" + j + "只");        
            }
        }

 

2.韩信点兵

部队人数大约有1000多人,不到2000,采用报数的方式,得到以下结果:

5人一组余1人, 7人一组余2人,8人一组余3人,求部队实际人数

public static void main(String[] args) {
        for (int i = 1000; i < 2000; ++i) {
            if (i % 5 == 1 && i % 7 == 2 && i % 8 == 3) {
                System.out.println("总人数:" + i);
            }
        }
    }

 

3.马与瓦

总共有 100 匹马,总共驮有 100 块瓦(古代的瓦,很大,很重)

每匹大马每次能驮 3 块瓦,每匹小马每次能驮 2 块瓦,小马驹每次 2个马驹驮 1块瓦

求各种马的数目

public static void main(String[] args) {
        int tiles = 100; // 瓦片数目
        int horses = 100; // 马数量总和
        for (int big = 0; big <= tiles / 3; ++big) {
            for (int mid = 0; mid <= tiles / 2; ++mid) {
                int small = horses - big - mid;
                if (small % 2 == 0 && big * 3 + mid * 2 + small / 2 == tiles) {
                    System.out.println("各种马的数目: 大马: " + big + ", 小马: " + mid
                            + ", 小马驹: " + small);
                }
            }
        }
    }

效果:

 

posted on 2017-05-06 21:17  wanlifeipeng  阅读(203)  评论(0编辑  收藏  举报