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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

和尚和鬼的故事 .

發布時間:2024/1/8 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 和尚和鬼的故事 . 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第二個問題:這回是用船把這三個僧侶和三個鬼運到河對面,但是千萬要注意,當一邊的鬼的數量多于僧侶,鬼就會吃掉僧侶。比上一題難了點,不過還是可以解開的吧!
http://www.chinaren.com/20050330/n224935292.shtml

邏輯處理類 [java] view plain copy print ?
  • import?java.util.ArrayList;??
  • ??
  • ??
  • public?class?Flash?{??
  • ??
  • ????static?ArrayList<Body>?curList?=?new?ArrayList<Body>();??
  • ????static?ArrayList<Body>?tarList?=?new?ArrayList<Body>();??
  • ??????
  • ????static?boolean?bFlag?=?false;???????????????????????????????//用于?標記船在哪里???false表示在原地方?true表示在目的地 ??
  • ??????
  • ????static?ArrayList<Body>?list?=?new?ArrayList<Body>();??
  • ??????
  • ????public?static?void?main(String[]?args)?{??
  • ??????????
  • ????????//初始化3個人 ??
  • ????????Body?p1?=?new?Body();??
  • ????????p1.setIndex(Body.PEOPLE);??
  • ??????????
  • ????????Body?p2?=?new?Body();??
  • ????????p2.setIndex(Body.PEOPLE);??
  • ??????????
  • ????????Body?p3?=?new?Body();??
  • ????????p3.setIndex(Body.PEOPLE);??
  • ??????????
  • ????????//初始化3個鬼 ??
  • ????????Body?g1?=?new?Body();??
  • ????????g1.setIndex(Body.GHOST);??
  • ??????????
  • ????????Body?g2?=?new?Body();??
  • ????????g2.setIndex(Body.GHOST);??
  • ??????????
  • ????????Body?g3?=?new?Body();??
  • ????????g3.setIndex(Body.GHOST);??
  • ??????????
  • ????????curList.add(p1);??
  • ????????curList.add(p2);??
  • ????????curList.add(p3);??
  • ????????curList.add(g1);??
  • ????????curList.add(g2);??
  • ????????curList.add(g3);??
  • ??????????
  • ????????new?Thread(){??
  • ????????????public?void?run(){??
  • ????????????????while(tarList.toArray().length?<?6){??
  • ????????????????????if(bFlag){??
  • ????????????????????????//目的地----原地方 ??
  • ????????????????????????Transportation(tarList,curList,1);??
  • ????????????????????}else{??
  • ????????????????????????//原地方----目的地 ??
  • ????????????????????????Transportation(curList,tarList,0);??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}??
  • ????????}.start();??
  • ????}??
  • ??????
  • ????public?static?void?Transportation(ArrayList<Body>?cur,ArrayList<Body>?tar,int?dirFlag){??
  • ????????//方案是否可行 ??
  • ????????boolean?flag?=?false;??
  • ????????Body?temp1?=?null;??
  • ????????Body?temp2?=?null;??
  • ??????????
  • ????????if(list.toArray().length?==?1){??
  • ????????????temp1?=?list.get(0);??
  • ????????}else?if(list.toArray().length?==?2){??
  • ????????????temp1?=?list.get(0);??
  • ????????????temp2?=?list.get(1);??
  • ????????}??
  • ??
  • ????????//如果運兩個 ??
  • ????????for(Body?b1?:?cur){??
  • ????????????for(Body?b2?:?cur){??
  • ????????????????if(!b2.equals(b1)){??
  • ??????????????????????
  • ????????????????????if(temp1?==?null){??
  • ????????????????????????temp1?=?new?Body();??
  • ????????????????????????temp1.setIndex(-1);??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????????if(temp2?==?null){??
  • ????????????????????????temp2?=?new?Body();??
  • ????????????????????????temp2.setIndex(-1);??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????????if(!(((temp1.getIndex()?==?b1.getIndex())?&&?(temp2.getIndex()?==?b2.getIndex()))?||??
  • ????????????????????????????((temp2.getIndex()?==?b1.getIndex())?&&?(temp1.getIndex()?==?b2.getIndex())))){??
  • ??????????????????????????
  • ????????????????????????int?curBi?=?0;??????//剩下的人得數量 ??
  • ????????????????????????int?curGi?=?0;??????//剩下的鬼的數量 ??
  • ??????????????????????????
  • ????????????????????????for(Body?bb?:?cur){??
  • ????????????????????????????if(bb.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????????curBi?++;??
  • ????????????????????????????}else{??
  • ????????????????????????????????curGi?++;??
  • ????????????????????????????}??
  • ????????????????????????}??
  • ??????????????????????????
  • ????????????????????????if(b1.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????curBi?--;??
  • ????????????????????????}else{??
  • ????????????????????????????curGi?--;??
  • ????????????????????????}??
  • ??????????????????????????
  • ????????????????????????if(b2.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????curBi?--;??
  • ????????????????????????}else{??
  • ????????????????????????????curGi?--;??
  • ????????????????????????}??
  • ??????????????????????????
  • ????????????????????????int?tarBi?=?0;??????//剩下的人得數量 ??
  • ????????????????????????int?tarGi?=?0;??????//剩下的鬼的數量 ??
  • ??????????????????????????
  • ????????????????????????for(Body?bb?:?tar){??
  • ????????????????????????????if(bb.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????????tarBi?++;??
  • ????????????????????????????}else{??
  • ????????????????????????????????tarGi?++;??
  • ????????????????????????????}??
  • ????????????????????????}??
  • ??????????????????????????
  • ????????????????????????if(b1.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????tarBi?++;??
  • ????????????????????????}else{??
  • ????????????????????????????tarGi?++;??
  • ????????????????????????}??
  • ??????????????????????????
  • ????????????????????????if(b2.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????tarBi?++;??
  • ????????????????????????}else{??
  • ????????????????????????????tarGi?++;??
  • ????????????????????????}??
  • ??????????????????????????
  • ????????????????????????//如果河岸兩邊鬼的數量都小于或等于人的數量,說明方案可行 ??
  • ????????????????????????if((tarGi?<=?tarBi?||?tarBi?==?0)&&?(curGi?<=?curBi?||?curBi?==?0)){??
  • ????????????????????????????flag?=?true;??????
  • ????????????????????????????temp1?=?b1;??
  • ????????????????????????????temp2?=?b2;??
  • ????????????????????????????break;??
  • ????????????????????????}??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????}??
  • ????????????}??
  • ??????????????
  • ????????????if(flag){??
  • ????????????????break;??
  • ????????????}??
  • ????????}??
  • ????????if(flag){??
  • ????????????tar.add(temp1);??
  • ????????????tar.add(temp2);??
  • ????????????cur.remove(temp1);??
  • ????????????cur.remove(temp2);??
  • ????????????list.removeAll(list);??
  • ????????????list.add(temp1);??
  • ????????????list.add(temp2);??
  • ????????????showResult(list,dirFlag);??
  • ????????????if(bFlag){??
  • ????????????????bFlag?=?false;??
  • ????????????}else{??
  • ????????????????bFlag?=?true;??
  • ????????????}??
  • ????????}else{??
  • ????????????if(temp2?!=?null){??
  • ????????????????temp1?=?new?Body();??
  • ????????????????temp1.setIndex(-1);??
  • ????????????}??
  • ??????????????
  • ????????????//如果運一個 ??
  • ????????????for(Body?b?:?cur){??
  • ????????????????if(temp1.getIndex()?!=?b.getIndex()){??
  • ??????????????????????
  • ????????????????????int?curBi?=?0;??????//剩下的人得數量 ??
  • ????????????????????int?curGi?=?0;??????//剩下的鬼的數量 ??
  • ??????????????????????
  • ????????????????????for(Body?bb?:?cur){??
  • ????????????????????????if(bb.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????curBi?++;??
  • ????????????????????????}else{??
  • ????????????????????????????curGi?++;??
  • ????????????????????????}??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????????if(b.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????curBi?--;??
  • ????????????????????}else{??
  • ????????????????????????curGi?--;??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????????int?tarBi?=?0;??????//剩下的人得數量 ??
  • ????????????????????int?tarGi?=?0;??????//剩下的鬼的數量 ??
  • ??????????????????????
  • ????????????????????for(Body?bb?:?tar){??
  • ????????????????????????if(bb.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????????tarBi?++;??
  • ????????????????????????}else{??
  • ????????????????????????????tarGi?++;??
  • ????????????????????????}??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????????if(b.getIndex()?==?Body.PEOPLE){??
  • ????????????????????????tarBi?++;??
  • ????????????????????}else{??
  • ????????????????????????tarGi?++;??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????????//如果河岸兩邊鬼的數量都小于或等于人的數量,說明方案可行 ??
  • ????????????????????if((tarGi?<=?tarBi?||?tarBi?==?0)&&?(curGi?<=?curBi?||?curBi?==?0)){??
  • ????????????????????????flag?=?true;??
  • ????????????????????????temp1?=?b;??
  • ????????????????????????break;??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}??
  • ????????????if(flag){??
  • ????????????????tar.add(temp1);??
  • ????????????????cur.remove(temp1);??
  • ????????????????list.removeAll(list);??
  • ????????????????list.add(temp1);??
  • ????????????????showResult(list,dirFlag);??
  • ????????????????if(bFlag){??
  • ????????????????????bFlag?=?false;??
  • ????????????????}else{??
  • ????????????????????bFlag?=?true;??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????}??
  • ??????
  • ????public?static?void?showResult(ArrayList<Body>?list,int?nflag){??
  • ????????if(nflag?==?0){??
  • ??????????????
  • ????????????System.out.println("原地方--->目的地:");??
  • ??????????????
  • ????????????for(Body?b?:?list){??
  • ????????????????switch(b.getIndex()){??
  • ????????????????case?Body.PEOPLE:??
  • ????????????????????System.out.print("人?????");??
  • ????????????????????break;??
  • ????????????????case?Body.GHOST:??
  • ????????????????????System.out.print("鬼?????");??
  • ????????????????????break;??
  • ????????????????}??
  • ????????????}??
  • ????????}else?if(nflag?==?1){??
  • ??????????????
  • ????????????System.out.println("目的地--->向原地方:");??
  • ??????????????
  • ????????????for(Body?b?:?list){??
  • ????????????????switch(b.getIndex()){??
  • ????????????????case?Body.PEOPLE:??
  • ????????????????????System.out.print("人?????");??
  • ????????????????????break;??
  • ????????????????case?Body.GHOST:??
  • ????????????????????System.out.print("鬼?????");??
  • ????????????????????break;??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????????System.out.println();??
  • ????}??
  • }??
  • import java.util.ArrayList; public class Flash { static ArrayList<Body> curList = new ArrayList<Body>(); static ArrayList<Body> tarList = new ArrayList<Body>(); static boolean bFlag = false; //用于 標記船在哪里 false表示在原地方 true表示在目的地 static ArrayList<Body> list = new ArrayList<Body>(); public static void main(String[] args) { //初始化3個人 Body p1 = new Body(); p1.setIndex(Body.PEOPLE); Body p2 = new Body(); p2.setIndex(Body.PEOPLE); Body p3 = new Body(); p3.setIndex(Body.PEOPLE); //初始化3個鬼 Body g1 = new Body(); g1.setIndex(Body.GHOST); Body g2 = new Body(); g2.setIndex(Body.GHOST); Body g3 = new Body(); g3.setIndex(Body.GHOST); curList.add(p1); curList.add(p2); curList.add(p3); curList.add(g1); curList.add(g2); curList.add(g3); new Thread(){ public void run(){ while(tarList.toArray().length < 6){ if(bFlag){ //目的地----原地方 Transportation(tarList,curList,1); }else{ //原地方----目的地 Transportation(curList,tarList,0); } } } }.start(); } public static void Transportation(ArrayList<Body> cur,ArrayList<Body> tar,int dirFlag){ //方案是否可行 boolean flag = false; Body temp1 = null; Body temp2 = null; if(list.toArray().length == 1){ temp1 = list.get(0); }else if(list.toArray().length == 2){ temp1 = list.get(0); temp2 = list.get(1); } //如果運兩個 for(Body b1 : cur){ for(Body b2 : cur){ if(!b2.equals(b1)){ if(temp1 == null){ temp1 = new Body(); temp1.setIndex(-1); } if(temp2 == null){ temp2 = new Body(); temp2.setIndex(-1); } if(!(((temp1.getIndex() == b1.getIndex()) && (temp2.getIndex() == b2.getIndex())) || ((temp2.getIndex() == b1.getIndex()) && (temp1.getIndex() == b2.getIndex())))){ int curBi = 0; //剩下的人得數量 int curGi = 0; //剩下的鬼的數量 for(Body bb : cur){ if(bb.getIndex() == Body.PEOPLE){ curBi ++; }else{ curGi ++; } } if(b1.getIndex() == Body.PEOPLE){ curBi --; }else{ curGi --; } if(b2.getIndex() == Body.PEOPLE){ curBi --; }else{ curGi --; } int tarBi = 0; //剩下的人得數量 int tarGi = 0; //剩下的鬼的數量 for(Body bb : tar){ if(bb.getIndex() == Body.PEOPLE){ tarBi ++; }else{ tarGi ++; } } if(b1.getIndex() == Body.PEOPLE){ tarBi ++; }else{ tarGi ++; } if(b2.getIndex() == Body.PEOPLE){ tarBi ++; }else{ tarGi ++; } //如果河岸兩邊鬼的數量都小于或等于人的數量,說明方案可行 if((tarGi <= tarBi || tarBi == 0)&& (curGi <= curBi || curBi == 0)){ flag = true; temp1 = b1; temp2 = b2; break; } } } } if(flag){ break; } } if(flag){ tar.add(temp1); tar.add(temp2); cur.remove(temp1); cur.remove(temp2); list.removeAll(list); list.add(temp1); list.add(temp2); showResult(list,dirFlag); if(bFlag){ bFlag = false; }else{ bFlag = true; } }else{ if(temp2 != null){ temp1 = new Body(); temp1.setIndex(-1); } //如果運一個 for(Body b : cur){ if(temp1.getIndex() != b.getIndex()){ int curBi = 0; //剩下的人得數量 int curGi = 0; //剩下的鬼的數量 for(Body bb : cur){ if(bb.getIndex() == Body.PEOPLE){ curBi ++; }else{ curGi ++; } } if(b.getIndex() == Body.PEOPLE){ curBi --; }else{ curGi --; } int tarBi = 0; //剩下的人得數量 int tarGi = 0; //剩下的鬼的數量 for(Body bb : tar){ if(bb.getIndex() == Body.PEOPLE){ tarBi ++; }else{ tarGi ++; } } if(b.getIndex() == Body.PEOPLE){ tarBi ++; }else{ tarGi ++; } //如果河岸兩邊鬼的數量都小于或等于人的數量,說明方案可行 if((tarGi <= tarBi || tarBi == 0)&& (curGi <= curBi || curBi == 0)){ flag = true; temp1 = b; break; } } } if(flag){ tar.add(temp1); cur.remove(temp1); list.removeAll(list); list.add(temp1); showResult(list,dirFlag); if(bFlag){ bFlag = false; }else{ bFlag = true; } } } } public static void showResult(ArrayList<Body> list,int nflag){ if(nflag == 0){ System.out.println("原地方--->目的地:"); for(Body b : list){ switch(b.getIndex()){ case Body.PEOPLE: System.out.print("人 "); break; case Body.GHOST: System.out.print("鬼 "); break; } } }else if(nflag == 1){ System.out.println("目的地--->向原地方:"); for(Body b : list){ switch(b.getIndex()){ case Body.PEOPLE: System.out.print("人 "); break; case Body.GHOST: System.out.print("鬼 "); break; } } } System.out.println(); } }
    [java] view plain copy print ?
  • public?class?Body?{??
  • ????public?int?index;??
  • ??????
  • ????public?static?final?int?PEOPLE?=?0;??
  • ????public?static?final?int?GHOST?=?1;??
  • ??
  • ????public?int?getIndex()?{??
  • ????????return?index;??
  • ????}??
  • ??
  • ????public?void?setIndex(int?index)?{??
  • ????????this.index?=?index;??
  • ????}??
  • }??
  • public class Body { public int index; public static final int PEOPLE = 0; public static final int GHOST = 1; public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } }


    輸出結果: 原地方--->目的地:
    人 ? ? 鬼 ? ??
    目的地--->向原地方:
    人 ? ??
    原地方--->目的地:
    鬼 ? ? 鬼 ? ??
    目的地--->向原地方:
    鬼 ? ??
    原地方--->目的地:
    人 ? ? 人 ? ??
    目的地--->向原地方:
    鬼 ? ? 人 ? ??
    原地方--->目的地:
    人 ? ? 人 ? ??
    目的地--->向原地方:
    鬼 ? ??
    原地方--->目的地:
    鬼 ? ? 鬼 ? ??
    目的地--->向原地方:
    人 ? ??
    原地方--->目的地:
    鬼 ? ? 人 ? ??
    職場 鬼 休閑 java學習

    0

    微博 QQ 微信

    收藏

    上一篇:貪吃蛇小游戲 下一篇:人羊菜以及狼的故事 . 彩霞飛飛

    182篇文章,31W+人氣,0粉絲

    轉載于:https://blog.51cto.com/caixia/771232

    總結

    以上是生活随笔為你收集整理的和尚和鬼的故事 .的全部內容,希望文章能夠幫你解決所遇到的問題。

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