商仆过河问题代码(C#版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//代码名称:商仆过河问题
//使用语言:C#
//编译环境:Windows10 、Visual Stdio 2013
//测试环境:Window7、Windows8、Windows10测试均通过
//目录
//变量声明
//主函数
//调用的函数
// 01画头函数
// 02起始值start输入
// 03迭代的算法
// 04输出每种正确方法的数组
// 05输出计算过程信息
// 06检查状态变量是否合法方法
// 07判断状态向量是否重复
// 08产生合法运载向量的合法
//************************************************程序开始************************************************
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.T asks;
namespace ConsoleApplication5
{
class Program
{
#region 所有的静态变量
static int Boat_Capacity; //船载人数静态变量
static int Person_Capacity; //商人和仆人的人数上限
static Status[] YZ; //运载向量集合
static Int64 MethodNum = 0; //统计产生方法所用的步骤数
static Int64 MethodNumSum = 0; //统计产生的方法个数
static Int64 CalculatorNum = 0; //统计计算次数
static Int64 Step = 50; //初始开始步骤值
static ArrayList MinArray=new ArrayList(); //记录最小步骤方法的数据数组
struct Status //定义商仆结构体
{
public int _Trader; //商人数
public int _Servant; //仆人数
}
#endregion
//************************************************主函数************************************************ static void Main(string[] args)
{
Head(); //画头
Start(); //初始值导入
Status zt; zt._Trader = Person_Capacity; zt._Servant = Person_Capacity; //初始化商人和仆人数
ArrayList ztArr = new ArrayList(); //初始化运载状态数组
ztArr.Add(zt);
System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
//时间对象
timer.Start(); //计时开始
Recursion_Filter(zt, ztArr, 0, true); //迭代开始
timer.Stop(); //计时结束
Console.WriteLine("----------------------------------------------------------------");
Console.Write("计算完毕!");
Console.WriteLine("程序耗时: {0}", timer.Elapsed);
Console.WriteLine("计算时间由您计算机性能决定,您用时多少呢?O(∩_∩)O");
Console.WriteLine("----------------------------------------------------------------");
Console.Write("输入[exit]退出程序:");
string exitStr="";
do
{
exitStr=Console.ReadLine();
}
while (exitStr != "exit");
} //end main 主函数结束
//************************************************调用的函数************************************************
#region 01画头函数
static void Head()
{
Console.WriteLine("=========================");
Console.WriteLine("=欢迎使用过河问题计算程序!=");
Console.WriteLine("=========================");
}
#endregion
#region 02起始值start输入
static void Start()
{
Console.Write("请输入商人/仆人的人数上限:");
Person_Capacity = Convert.ToInt32(Console.ReadLine());