亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? macps.java

?? 傳教士與野人過河
?? JAVA
字號:
import java.util.*;
import java.io.*;

/**
 * Missionaries And Cannibals Puzzle Solver.
 * 
 * Solution to the puzzle must not violate any of the following 2 rules: 1)
 * Relative headcount: cannibals can't outnumber missionaries at any point. 2)
 * Boat's loading: mustn't exceed the max.
 */
public class MACPS {
	public class SolutionNotFoundException extends RuntimeException {
	}

	public static final Object MISSIONARY = "m", // Simple representation
			CANNIBAL = "c", // of objects
			BOAT = "v"; // in the puzzle.

	private int boat_max_load, boat_min_load = 1; // Shouldn't be any other
													// value.

	private RiverScene firstScene, finalScene;

	// Recursively searches for a solution using Depth-First Search strategy.
	// Takes a Stack containing only the first scene (root of tree).
	// Returns a collection of scenes connecting the first scene to the final.
	// Throws SolutionNotFoundException for obvious reason.
	// Deploys the following optimization strategy:
	// Transfers as much as possible from source side,
	// as little as possible from target side.
	private Collection getSolutionSteps(Stack takenSteps) {
		RiverScene lastScene = (RiverScene) takenSteps.peek();
		if (lastScene.equals(finalScene))
			return takenSteps;

		RiverScene newStep = lastScene.deepCopy();

		// To allow transfer in both directions to share the same chunk of code.
		int start = boat_max_load, stop = boat_min_load - 1, step = -1;
		RiverSide from = newStep.lside, to = newStep.rside;
		if (to.hasBoat()) {
			start = boat_min_load;
			stop = boat_max_load + 1;
			step = 1;
			from = newStep.rside;
			to = newStep.lside;
		}

		for (int nPassenger = start; nPassenger != stop; nPassenger += step) {
			Collection menCombs = new HashSet( // HashSet eliminates
												// duplicates.
					Combinatorics.combinations(from.getMenList(), nPassenger));

			nextComb: for (Iterator comb = menCombs.iterator(); comb.hasNext();) {
				Collection menList = (Collection) comb.next();
				try {
					from.transferMen(to, menList);

					// If it's a taken step, undo and try next combination.
					for (Iterator i = takenSteps.iterator(); i.hasNext();)
						if (i.next().equals(newStep)) {
							to.transferMen(from, menList);
							continue nextComb;
						}

					takenSteps.push(newStep);
					return getSolutionSteps(takenSteps);
				} catch (SecurityException e) {
					// Transfer didn't take place. Just try next combination.
				} catch (SolutionNotFoundException e) {
					// New step led to no solution in leaves. Undo, then next.
					takenSteps.pop();
					to.transferMen(from, menList);
				}
			}
		}
		// All possible steps led to no solution, so
		throw new SolutionNotFoundException();
	}

	// Do setup, then kick-starts getSolutionSteps( Stack takenSteps ).
	public Collection getSolutionSteps(int nMissionary, int nCannibal,
			int boatCapacity) {
		if (nMissionary < 0 || nCannibal < 0 || boatCapacity < 0)
			throw new IllegalArgumentException("Negative argument value.");

		RiverSide sourceSide = new RiverSide(nMissionary, nCannibal, true), targetSide = new RiverSide(
				0, 0, false);
		boat_max_load = boatCapacity;
		firstScene = new RiverScene(sourceSide, targetSide);
		finalScene = new RiverScene(targetSide, sourceSide);

		if (firstScene.lside.fatal()) // First scene can be valid but fatal.
			throw new SolutionNotFoundException();

		Stack steps = new Stack();
		steps.push(firstScene);
		return getSolutionSteps(steps);
	}

	public static void main(String[] args) {
		int nMissionary = 3, nCannibal = 3, boatCapacity = 2;

		System.out
				.println("\nSolving the puzzle of Missionaries And Cannibals with\n"
						+ nMissionary
						+ " missionaries and "
						+ nCannibal
						+ " cannibals "
						+ "and a boat that can take up to "
						+ boatCapacity + " creatures..");

		try {
			Collection steps = new MACPS().getSolutionSteps(nMissionary,
					nCannibal, boatCapacity);
			System.out.println("\nSolution found:\n");
			for (Iterator step = steps.iterator(); step.hasNext();)
				System.out.println(step.next() + "\n");
		} catch (SolutionNotFoundException e) {
			System.out.println("\nNo solution found.");
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一二区| 日韩精品一区二| 国产一区视频网站| 久久疯狂做爰流白浆xx| 日韩福利视频网| 日韩精品电影在线| 亚洲欧美另类久久久精品2019| 亚洲日本免费电影| 亚洲免费观看高清在线观看| 亚洲精品乱码久久久久久黑人| 亚洲精品久久久久久国产精华液| 亚洲免费观看高清完整版在线观看| 亚洲视频 欧洲视频| 亚洲精品视频观看| 日韩中文字幕麻豆| 国产精品一二三四五| 国产成人av一区二区三区在线| 丁香天五香天堂综合| 91免费在线视频观看| 欧美午夜电影一区| 精品久久久久久最新网址| 久久久久97国产精华液好用吗| 中文字幕精品在线不卡| 一区二区三区免费| 久久99久久精品| 成人中文字幕在线| 在线一区二区三区四区| 日韩欧美123| 亚洲四区在线观看| 日韩高清电影一区| 成人高清视频免费观看| 欧美日韩二区三区| 国产人久久人人人人爽| 亚洲在线成人精品| 裸体歌舞表演一区二区| 91麻豆视频网站| 日韩视频免费观看高清在线视频| 国产香蕉久久精品综合网| 亚洲另类春色校园小说| 国产伦精一区二区三区| 色8久久人人97超碰香蕉987| 久久亚洲精精品中文字幕早川悠里 | 欧洲视频一区二区| 日韩欧美一二三区| 一区二区三区久久| 国产一区二区导航在线播放| 日本丶国产丶欧美色综合| 精品免费视频.| 亚洲影院免费观看| 成人激情文学综合网| 91精品国产欧美一区二区成人| 中文字幕精品一区| 国产一区二区三区黄视频| 欧美中文字幕不卡| 国产精品少妇自拍| 国产在线国偷精品免费看| 91福利国产成人精品照片| 久久蜜臀中文字幕| 免费观看日韩av| 欧美日韩一区二区在线观看| 中文字幕日韩一区| 国产精品2024| 久久精子c满五个校花| 日本不卡一区二区三区高清视频| 欧美亚洲愉拍一区二区| 亚洲麻豆国产自偷在线| 不卡的看片网站| 国产精品久久久久久一区二区三区| 久久国产精品99久久久久久老狼| 欧美日韩一区二区三区在线| 亚洲一区二区av电影| 91豆麻精品91久久久久久| 亚洲免费av观看| 色婷婷av一区二区三区软件 | 欧美成va人片在线观看| 午夜私人影院久久久久| 欧美日韩免费一区二区三区| 亚洲国产视频一区二区| 91麻豆国产在线观看| 亚洲免费在线看| 色哦色哦哦色天天综合| 一区二区三区在线视频观看| 在线中文字幕不卡| 午夜一区二区三区在线观看| 欧美电影一区二区三区| 蜜桃久久久久久| 久久久综合视频| 国产精品免费网站在线观看| 亚洲欧美日韩国产另类专区 | 经典三级在线一区| 日韩一区二区三区三四区视频在线观看 | 欧美一区二区三区性视频| 日韩福利视频导航| 精品国产乱码久久久久久老虎| 久久国产生活片100| 国产亚洲人成网站| av不卡在线播放| 亚洲午夜免费福利视频| 日韩一区二区精品| 成人性生交大片免费看视频在线| 国产精品美女久久久久aⅴ国产馆| 不卡欧美aaaaa| 亚洲福利一区二区三区| 欧美成人官网二区| 国产自产视频一区二区三区| 7777女厕盗摄久久久| 黄色日韩网站视频| 亚洲欧美日韩在线| 91精品国产色综合久久久蜜香臀| 国产在线精品一区二区三区不卡| 国产免费观看久久| 欧美唯美清纯偷拍| 国产成人精品免费| 偷拍与自拍一区| 国产日韩av一区| 欧美另类z0zxhd电影| 国产成人在线视频免费播放| 亚洲18色成人| 国产精品天美传媒沈樵| 欧美一区二区在线免费观看| 成人一区二区三区视频| 美女尤物国产一区| 亚洲激情一二三区| 国产人伦精品一区二区| 日韩欧美一区二区免费| 一本在线高清不卡dvd| 国产一区二区三区四区五区美女| 色婷婷亚洲精品| 午夜亚洲国产au精品一区二区| 久久综合九色综合97婷婷女人| 欧美色图第一页| 成人一区二区在线观看| 狠狠色综合播放一区二区| 亚洲影视在线播放| 亚洲欧洲精品一区二区精品久久久| 日韩精品一区二区三区蜜臀| 欧美日韩不卡视频| 欧美亚洲日本国产| 91蝌蚪国产九色| 不卡视频免费播放| 国产成人综合网| 国产麻豆一精品一av一免费| 蜜桃精品视频在线| 日韩av一二三| 视频一区二区三区在线| 亚洲综合另类小说| 亚洲一区二区欧美日韩| 亚洲精品ww久久久久久p站| 成人免费在线视频观看| 国产精品久久久久久久久晋中| 久久久久久久综合色一本| 精品国产伦一区二区三区免费| 韩国精品一区二区| 一区二区三区欧美日韩| 国产精品女上位| 国产免费成人在线视频| 中文字幕的久久| 国产精品美女久久久久久久久久久 | 精品国产第一区二区三区观看体验 | 日韩三级精品电影久久久| 91精品国产入口在线| 欧美一区二区三区成人| 日韩亚洲欧美中文三级| 精品剧情在线观看| 国产午夜精品一区二区三区视频| 国产视频一区二区在线| 中文字幕av一区二区三区免费看| 国产欧美一区二区精品秋霞影院| 国产精品久久久久久久岛一牛影视| 国产精品乱码人人做人人爱| 亚洲欧美综合另类在线卡通| 精品国产百合女同互慰| www.亚洲激情.com| av在线播放成人| 色猫猫国产区一区二在线视频| 在线免费观看日本一区| 欧美男生操女生| 国产亚洲一本大道中文在线| 中文字幕在线免费不卡| 国产一区在线精品| 91一区二区在线| 制服丝袜中文字幕一区| 国产日韩欧美精品在线| 亚洲最大的成人av| 美腿丝袜亚洲色图| 不卡一区中文字幕| 91麻豆精品国产自产在线| 国产欧美一区二区精品性| 亚洲自拍偷拍麻豆| 国产精品自在在线| 在线观看国产日韩| 久久麻豆一区二区| 午夜精品爽啪视频| 成人h动漫精品一区二区| 欧美裸体bbwbbwbbw| 中文字幕一区av| 美女性感视频久久| 在线看国产一区| 91老师片黄在线观看| 久久精品国产澳门|