过河

ACM
算法练习题
bingoabin
package com.epoint.bigdata;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class PathRiver {
	Dual carryingSchema[]; // 小船可提供的载人方案
	Dual initStatus; // 初始状态
	Dual endStatus; // 终止状态
	List<Node> path = new ArrayList<Node>(); // 过河路径
	Set<Node> iNode = new TreeSet(); // 孤立结点

	public PathRiver(int merchant, int servant, int carrying) {
		initStatus = new Dual(merchant, servant);
		endStatus = new Dual(0, 0);
		buildCarryingSchema(carrying);
		findPath();
		if (path.isEmpty()) {
			System.out.println("Can't solve the problem");
		} else {
			for (Node e : path) {
				System.out.println(e);
			}
		}
	}

	public static void main(String[] args) {
		PathRiver p = new PathRiver(5, 5, 2);
	}

	public boolean isRepeat() {
		return path.contains(this);
	}

	/**
	 * 构建渡河方案 根据小船的最大可载人数且小船不能空 计算可行方案 每个方案表示一个dual 对象 并把保存在carryingSchema中。
	 * 在Node中,通过数组下标来引用小船的载人方案。 数组既可以正向
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值