java农夫过河_农夫过河问题(java版)
packagecom.my.courseDesign;public classCourseDesign {/** 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 voidmain(String[] args){while (coast[0]+coast[1]+coast[2]+coast[3]!=4){ //只要四者没有全部到B岸就一直过河
for (int i=0;i<4;i++){ //对四种过河方式进行对比
nextCoast(i,coast,boat); //调用nextCoast()方法返回过完河后两岸状态
if (isSafe(cross)){ //调用isSafe()方法判断过完河后是否都处于安全状态
print(); //如果都安全则调用print()方法对该次过河进行打印
exchangCoast(); //调用exchangCoast()方法将过完河后的状态赋值给过河前状态
System.out.println(); //换行
}
}
}
System.out.println("过河成功!"); //所有人过完之后输出成功
}public static void nextCoast(int i,int[] coast,int[][] boat){ //编写nextCoast()方法返回过完河后两岸状态
cross[0]=(coast[0]+boat[i][0])%2; //通过取余来实现做出的设定
cross[1]=(coast[1]+boat[i][1])%2;
cross[2]=(coast[2]+boat[i][2])%2;
cross[3]=(coast[3]+boat[i][3])%2;
}public static boolean isSafe(int[] cross){ //编写isSafe()方法判断过完河后是否都处于安全状态
if( //对10种安全的情况依次做对比
(cross[0]==1 && cross[1]==1 && cross[2]==1 && cross[3]==1) ||(cross[0]==0 && cross[1]==0 && cross[2]==0 && cross[3]==0) ||(cross[0]==1 && cross[1]==0 && cross[2]==1 && cross[3]==0) ||(cross[0]==1 && cross[1]==1 && cross[2]==1 && cross[3]==0) ||(cross[0]==1 && cross[1]==1 && cross[2]==0 && cross[3]==1) ||(cross[0]==1 && cross[1]==0 && cross[2]==1 && cross[3]==1) ||(cross[0]==0 && cross[1]==1 && cross[2]==0 && cross[3]==0) ||(cross[0]==0 && cross[1]==0 && cross[2]==1 && cross[3]==0) ||(cross[0]==0 && cross[1]==0 && cross[2]==0 && cross[3]==1) ||(cross[0]==0 && cross[1]==1 && cross[2]==0 && cross[3]==1)
){return true;
}else{return false;
}
}public static void print(){ //编写print()方法对该次过河进行打印
if (cross[0]==1){
System.out.print("从A岸到B岸:");
}else{
System.out.print("从B岸到A岸:");
}if(cross[0]!=coast[0]){
System.out.print("人");
}if(cross[1]!=coast[1]){
System.out.print("带狼");
}if(cross[2]!=coast[2]){
System.out.print("带羊");
}if(cross[3]!=coast[3]){
System.out.print("带白菜");
}
System.out.print("过河");
}public static void exchangCoast(){ //编写exchangCoast()方法将过完河后的状态赋值给过河前状态
for (int i=0;i<4;i++){
coast[i]=cross[i];
}
}
}
java农夫过河_农夫过河问题(java版)相关推荐
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- java 判断类型_如何快速入门Java编程学习(干货)
一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...
- 支持java虚拟主机_为何缺乏支持Java的虚拟主机
现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...
- 做Java头发少_这35个Java代码优化细节,你用了吗
链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...
- 我的世java途径错误_我的世界JAVA路径错误的解决方法分享
我的世界JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?第一手游网必须 ...
- java编程赋值运算符_跟我学java编程—简单赋值运算符“=”
赋值运算符是双目运算符,用在赋值表达式中.赋值运算符将值存储在运算符左边操作数指定的变量中.有两种赋值操作,简单赋值和复合赋值,简单赋值把运算符右边的操作数的值存储在运算符左边操作数指定的变量中:复合 ...
- java session使用_使用Neo4j和Java进行大数据分析 第2部分
本文的第一部分介绍了Neo4j及其Cypher查询语言.如果您已经阅读了第1部分,那么您已经了解了为什么Neo4j和其他图形数据库特别受社交图形或网络中用户之间关系建模的影响.您还在开发环境中安装了N ...
- java 异常信息_优雅的异常处理 -- Java中的异常
处理异常自己处理 try-catch抛出让别人处理 throws 获得异常信息 直接打印异常对象 通过异常对象调用getMessage()方法获得 通过异常对象调用printStackTrace()方 ...
- 我的世界手机版java安装失败_我的世界中国版JAVA路径错误的解决方法分享
我的世界中国版JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?九游必须 ...
最新文章
- oracle exec 和 call 区别
- Bi-level error correction for PacBio long reads
- [转]EOS智能合约 私链激活 基本操作
- DOM操作之CRUD操作
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 F- 1 + 2 = 3? (好难的找规律题)
- C# DataSet性能最佳实践
- TempDB为什么要根据CPU数目来决定文件个数
- 程序员抱怨:父母没文化没见识,当初努力学习远离看来是正确的
- 【[NOI2005]瑰丽华尔兹】
- asp.net mvc源码分析-Action篇 Action的执行
- CentOS安装后初始配置
- java语言打印上三角和下三角,进一步得到九九乘法表
- Realtek无线网卡在Linux,gentoo下Realtek无线网卡的解决方案…
- paip.简化字-手写参考二简字..共98个
- 云钉一体,支撑5亿用户1900万企业背后的技术复盘
- SpringBoot读取自定义环境配置信息的方法
- Win 10 无法锁屏,快捷键win+L失效
- 增值电信业务经营许可证是什么?怎么办理?
- 计算机应用论文评语大全,硕士学位论文评语大全
- matlab画柱形图