野人传教士过河
来源:互联网 发布:门户源码 编辑:程序博客网 时间:2024/05/17 02:28
package MBC;import java.util.Arrays;import java.util.Iterator;import java.util.LinkedList;import javax.crypto.Mac;class strack extends LinkedList {// 堆栈/** * */private static final long serialVersionUID = 1L;public boolean isEmpty() {return super.isEmpty();}public Object pop() {if (!this.isEmpty())return removeFirst();return "null";}public void push(Object e) {super.addFirst(e);}}class left {int m;// 传教士int c;// 野人int b;// 船boolean flag = true;public int getM() {return m;}public void setM(int m) {this.m = m;}public int getC() {return c;}public void setC(int c) {this.c = c;}public boolean isFlag() {return flag;}public void setFlag(boolean flag) {this.flag = flag;}public int getB() {return b;}public void setB(int b) {this.b = b;}public left(int m, int c, int b) {super();this.m = m;this.c = c;this.b = b;}}public class MCB {public static void main(String[] args) {left[] all = new left[16];// 合法状态集合all[0] = new left(0, 0, 0);all[1] = new left(0, 1, 1);all[2] = new left(0, 2, 1);all[3] = new left(0, 3, 1);all[4] = new left(1, 1, 1);all[5] = new left(2, 2, 0);all[6] = new left(3, 1, 1);all[7] = new left(3, 2, 1);all[8] = new left(0, 1, 0);all[9] = new left(0, 2, 0);all[10] = new left(1, 1, 0);all[11] = new left(2, 2, 1);all[12] = new left(3, 0, 0);all[13] = new left(3, 1, 0);all[14] = new left(3, 2, 0);all[15] = new left(3, 3, 1);left start = all[15]; // 开始状态all[15].setFlag(false);boolean flag = false;strack strack = new strack();strack.push(all[15]);MCB test = new MCB();test.doit(strack, all);}void doit(strack st, left[] all) {Iterator s = st.iterator();left shang = null;shang = (left) st.getFirst();if (st.getFirst().equals(all[0])) {// 输出System.out.println("完成一个");left hh = null;while (s.hasNext()) {hh = (left) s.next();System.out.print(hh.getM() + " " + hh.getC() + " " + hh.getB()+ " <-- ");}}for (int i = 14; i >= 0; i--) {if ((all[i].flag == true)// 符合操作&& (shang.getB() != all[i].getB())&& (shang.getC() + shang.getM() != all[i].getC()+ all[i].getM())&& (Math.abs(all[i].getM() - shang.getM())+ Math.abs(all[i].getC() - shang.getC()) <= 2)) {if ((all[i].getB() == 1 && ((all[i].getC() + all[i].getM()) > (shang.getC() + shang.getM())))|| (all[i].getB() == 0 && ((all[i].getC() + all[i].getM()) < (shang.getC() + shang.getM())))) {shang = all[i];all[i].flag = false;st.push(all[i]);doit(st, all);all[i].flag = true;st.pop();shang=(left)st.getFirst();}}// 符合操作}}}
阅读全文
0 0
- 传教士野人过河问题
- 传教士 野人 过河问题
- 野人传教士过河 算法
- 野人传教士过河问题
- 野人传教士过河
- 传教士和野人过河问题
- 野人与传教士过河问题
- 传教士野人过河问题---Java版本
- 三个传教士和三个野人过河
- 传教士与野人过河问题(一)
- 传教士与野人过河问题(二)
- Java实现传教士与野人过河问题
- 野人和传教士过河问题的C语言源代码
- 360面试题:传教士和野人过河问题。
- 野人与传教士
- 野人传教士问题
- 传教士与野人问题
- 传教士与野人
- 《计算机系统要素》概述
- 通知的基本用法和一些进阶技巧
- C++primer[习题][第四章][11-20]
- 设计模式之代理模式
- linux网络相关的命令
- 野人传教士过河
- 调用天气预报以及接口出现乱码解决方法
- python3 urllib 访问https网站
- ROIPoolingLayer源码解析
- 11.29作业
- &和&&的区别?
- 24点java代码
- Hadoop的分布式缓存
- node.js中的全局对象Buffer