黑马程序员技术交流社区

标题: 两个经典的古典问题的解决方案 [打印本页]

作者: 小羽同学    时间: 2018-7-17 18:51
标题: 两个经典的古典问题的解决方案
本帖最后由 小羽同学 于 2018-7-17 18:52 编辑

题目一:
"百马百担",有一百匹马,驮一百担货,大马驮3担,中马驮2担,
两只小马驮1担,问有大,中,小马各几匹?

首先,拿到这个问题我们可以根据它的提问定义三个变量来分别表示大,中,小马的个数.然后根据题意寻找它们个数之间的关系,
大马 + 中马 + 小马 = 100;
3 * 大马 + 2 * 中马 + 小马 / 2 = 100
小马匹数是偶数  
最后利用for循环的嵌套来解决这个问题
public class problem {
    public static void main(String[] args) {           for (int large = 0; large <= 100; large++) {
            for (int mid = 0; mid <= 100 - large; mid++) {
                for (int small = 0; small <= 100 - large - mid; small++) {
                    if (large * 3 + mid * 2 + small * 1 / 2 == 100 && large + mid + small == 100 && small % 2 == 0) {
                        System.out.println("有大马" + large + "匹,中马" + mid + "匹,小马" + small + "匹");
                        System.out.println("===========================");
                    }
                }
            }
        }
    }
}

题目二:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
这道题目也很经典,看似好像每个月兔子的成长个数没有什么规律,但我们根据题意慢慢思考其实是可以找到关系的首先,我定义了三个变量big,mid和small来分别表示可以生小兔子的大兔子,刚出生一个月的成长期兔子和刚出生的小兔子,他们三个之间是有一定关系的//  1     2      3          4               5              6             7             8
// 1小   1中  1大+1小   1大+1中+1小    2大+1中+2小    3大+2中+3小   5大+3中+5小    8大+5中+8
第一个月只有一个小兔子,我初始化
int big = 0;
int mid = 0;
int small = 1;
然后之后每个月大兔子的数量就等于上个月中兔子的数量,中兔子的数量等于上个月小兔子的数量,小兔子的数量等于这个月大兔子的数量,即
big += mid;
mid = small;
small = big;
源代码:public class rabbit {
    public static void main(String[] args) {
        System.out.println("请输入月数:");
        Scanner sc = new Scanner(System.in);
        int month = sc.nextInt();
        int twain;
        int big = 0;
        int mid = 0;
        int small = 1;
        for (int i = 1; i <= month-1; i++) {
            big += mid;
            mid = small;
            small = big;
        }
        twain = big + mid + small;
        System.out.println(month+"月有兔子"+twain+"对5");
    }
}





作者: 小浙姐姐    时间: 2018-7-23 16:04





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2