- class Scheme
- {
- //String[] left = new String[3];
- //String[] right = new String[3];
-
- static String[] left = {"狗","猫","鱼"};
- static String[] right = {"" ,"",""};
-
- static int number = 0;//记录河在那边,运动物的次数
- public static void main(String[] args)
- {
- String str = "";
- while (leftJudge(left))//判断数组是否为空
- {
- int i = 0;
- number++;
- if (number%2 == 1)//判断船在那一般 当number为1的时候船运往右边
- {
- for (;i<3;i++)
- {
- if (array(left,i)==false||left[i]==str)//判断数组是否有空,就代表没有动物并且在运回去的动物不能和运回来的动物一样
- {
- continue;
- }else{
- str = left[i];//把动物给船
- leftRi(left,right,i);//运过去河右边
- if (arrayJ(left)==false)//判断猫和狗。猫和鱼是否在一起,在一起的话则需要另外换一个去运;这以上三行都是试运
- {
- rightLe(left,right,i);
- continue;
- }else{
- break;//有合适的运到河右边则直接运过去,跳出循环
- }
- }
- }
- System.out.println("第" + number + "次, 老农用船将" +str+ "运到河右岸" );
- }else{
- if (arrayJ(right)==true)//船运往左边的时候,如果右边不打架的话,则不需要运动物到左边,直接去河左边
- {
- System.out.println("第" + number + "次, 老农用船回到了河左边");
- }else{
- for (; i<3; i++)
- {
- if (right[i]==str||array(right,i)==false)//河右边打架的,没有合适的的话判断是否带哪只会河左边,并且不能与上次带过来的动物重复,如果有一样的话,则直接跳过这只动物
- {
- continue;
- }else{
- str = right[i];//将动物放在船上运往右边
- rightLe(left,right,i);
- if (arrayJ(right)==false)//判断这只动物是否合适在右边,如果不行,则换下一只
- {
- leftRi(left,right,i);
- continue;
- }else{
- break;//如果条件全部符合,则直接运过去。
- }
- }
- }
- System.out.println("第" + number + "次, 老农用船将" +str+ "运到河左岸" );
- }
- }
- }
- }
- //判断左边数组是不是没有内容了;
- public static boolean leftJudge(String[] left){
- if (left[0]==""&&left[1]==""&&left[2]=="")
- {
- return false;
- }else{
- return true;
- }
- }
- //把数组A中的字符串,移动到B中
- public static void leftRi(String[] left,String[] right,int i){
- right[i] = left[i];
- Scheme.right[i] = right[i];
- Scheme.left[i] = "";
- }
- //把数组B中的字符串,移动到A中
- public static void rightLe(String[] left,String[] right,int i){
- left[i] = right[i];
- Scheme.left[i] = left[i];
- Scheme.right[i] = "";
- }
- //判断数组中狗和猫,猫跟鱼是否在一起
- public static boolean arrayJ(String[] array){
- if ((array[0]=="狗"&&array[1]=="猫")||(array[1]=="猫"&&array[2]=="鱼"))
- {
- return false;
- }else{
- return true;
- }
- }
- //判断数组中的元素那个为空,
- public static boolean array(String[] array,int i){
- if (array[i]=="")
- {
- return false;
- }else{
- return true;
- }
- }
- }
复制代码 |