A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘德坤 中级黑马   /  2015-10-15 22:04  /  229 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;

/**
* 10、 一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。
*     当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,
*     则不会发生这种问题。编程解决猫狗鱼过河问题。
* @author 张兆晖
*
*/

import java.util.ArrayList;

public class Test10 {

        public static void main(String[] args)

        {

                new Test10().tohere();

        }

        // 创建一个集合,代表起始点.

        ArrayList<String> here = new ArrayList<String>();

        // 创建一个集合,代表终点.

        ArrayList<String> there = new ArrayList<String>();

        // 添加元素.

        public Test10()

        {

                here.add("Dog");

                here.add("cat");

                here.add("fish");

        }

        // 定义一个方法,用来判断这三个动物之间关系.

        public boolean isSafe(ArrayList<String> al)

        {

                if (al.contains("dog") && al.contains("cat") || al.contains("cat")
                                && al.contains("fish"))

                {

                        return false;

                }

                return true;

        }

        // 定义一个方法,将起点的元素送到终点.

        public void tohere() {

                String str = here.get(0);

                here.remove(str);

                if (isSafe(here)) {

                        System.out.println("1农夫带着" + str + "去往对岸,这边还剩下" + here + ",对岸有"
                                        + there);

                        toThere(str);

                } else {

                        here.add(str);

                        tohere();

                }

        }

        // 定义一个方法,用来查看终点的元素.

        public void toThere(String s) {

                if (isSafe(there)) {

                        there.add(s);

                        if (here.isEmpty()) {

                                System.out.println("4农夫," + there + "都被你带过来了");

                                return;

                        }

                        if (isSafe(there)) {

                                System.out.println("2农夫回到原点,对岸有" + there);

                                tohere();

                        } else {

                                String temp = there.get(0);

                                there.remove(temp);

                                System.out.println("3农夫带着" + temp + "回到原点,这边有" + here + ",对岸有"
                                                + there);

                                here.add(temp);

                                tohere();

                        }

                } else {

                        there.remove(s);

                        tohere();
                }

        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马