日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

农夫过河+java,农夫过河问题(java版)

發布時間:2025/3/15 编程问答 8 豆豆
生活随笔 收集整理的這篇文章主要介紹了 农夫过河+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版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。