农夫过河问题(java版) 您所在的位置:网站首页 狼吃小羊游戏 农夫过河问题(java版)

农夫过河问题(java版)

2024-01-25 14:42| 来源: 网络整理| 查看: 265

 

问题描述: 一个农夫带着一只狼、一只羊、一只白菜,身处河南岸,要把全部东西带到北岸。问题是只有一条小船,船只能容纳他和一件东西,且狼吃羊,羊吃白菜。问:农夫怎样才能将所有东西安全带到河对岸。

代码实现:

package com.my.courseDesign; public class CourseDesign { /* * 1. 首先分为A岸,和B岸,A岸用0来表示,B岸用1来表示,在船上用1来表示,不再船上用0表示 * 2. 分别创建两个大小为4数组分别用来表示过河前和过河后的状态coast[4],cross[4], * 再创建一个二维数组表示存储过河方式boat[][] * 3. 经过分析符合岸上安全的情况为{0,0,0,0}、{1,1,1,1}、{1,0,1,0}、{1,1,1,0}、 * {1,1,0,1}、{1,0,1,1}、{0,1,0,0}、{0,0,1,0}、{0,0,0,1}、{0,1,0,1}十种情况, * 过河有{1,0,0,0}{1,1,0,0}{1,0,1,0}{1,0,0,1}四种情况 * 经过分析发现如果假设:1(船)+1(岸)=0,0(船)+0(岸)=0,0(船)+1(岸)=1,1(船)+0(岸)=1成立则过完河 * 之后的情况正好是四者过完河后在岸上的状态,思考后发现可以用求余的方式来实现 * 4. 创建一个方法返回过完河后两岸状态 * 5. 创建一个方法来判断过完河后状态是否为安全状态,如果不是则接着遍历,是的话则打印过河状态 * 6. 创建一个方法对该次过河进行打印 * 7. 创建一个方法将过完河后的状态赋值给过河前状态 * 8. 通过循环遍历对过河进行实现 * * * * */ static int[] coast={0,0,0,0}; //表示过河前状态 static int[][] boat={{1,1,0,0},{1,0,1,0},{1,0,0,1},{1,0,0,0}}; //所有过河方式 static int[] cross=new int[4]; //表示过完河后的状态 public static void main(String[] args){ while (coast[0]+coast[1]+coast[2]+coast[3]!=4){ //只要四者没有全部到B岸就一直过河 for (int i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有