- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数学模型第一次作业——董安葳
5123119 董安葳
1.程序设计(Java语言):
本人设计的程序的特色是可以让用户随意设定商人和仆人的数量(商人数大于仆人数),船的载人数为2人。本程序使用栈记录决策,使用向量记录一岸的商人数,采用遍历加回溯的方式实现。代码行数:440行。
import java.util.Scanner;
import java.util.Stack;
import java.util.Vector;
public class Buiness {
public static void main(String[] args) {
Stackdk s=new Stackdk();//决策记录栈
VectorInteger V=new VectorInteger();//记录已经有过的状态的向量
int x;//此岸的商人个数
int y;//此岸的仆人个数
int xx=0;//彼岸的商人数
int yy=0;//彼岸的仆人数
System.out.println(请输入商人的个数);
Scanner scn=new Scanner(System.in);
x=scn.nextInt();//输入商人的个数
if(x=0){//检测用户的错误输入
System.out.println(输入有误);
return;
}
System.out.println(请输入仆人数量:);
y=scn.nextInt();
if(xy || y=0){
System.out.println(输入有误);
return;
}
int xuan=0;//过河决策方案标记
int xuan2=0;//返回决策方案标记
boolean ff=false;//是否是选择返回方案标记
int inf=0;//选择过河方案成功与否标记
while(!(x==0 y==0)){//循环至全部都过河为止
if(ff==true){
xuan=0;//初始化返回决策方案
if(inf==0){//无适合的过河决策时,回溯返回方案
try{
V.remove(x*10+y);//弹出记录向量
}
catch(java.lang.ArrayIndexOutOfBoundsException e){//不能再弹出了,说明所有的方法都试过了,说明无解
System.out.println(无解);
return;
}
y=y+2;
yy=yy-2;//恢复
xuan2=s.pop().xuann;//弹出决策方案
//按照弹出的不同的返回决策方案来重新选择,避免了重复的选择
if(xuan2==-1){
xx=xx+1;
x=x-1;
yy=yy-1;
y=y+1;//恢复
if((x=y xx=yy) || (x==0) || (xx==0) x=0 y=0 xx=0 yy=0 (V.indexOf(x*10+y)==-1 || (V.size()-V.indexOf(x*10+y))%2!=0)){//满足不被仆人杀掉,满足没有重复的安排
V.add(x*10+y);
s.push(new dk(0,1,-2));
}
else{
yy=yy+1;
y=y-1;
xx=xx-2;
x=x+2;
if((x=y xx=yy) || (x==0) || (xx==0) x=0 y=0 xx=0 yy=0 (V.indexOf(x*10+y)==-1 || (V.size()-V.indexOf(x*10+y))%2!=0)){
V.add(x*10+y);
s.push(new dk(2,0,-3));
}
else{
xx=xx+2;
x=x-2;
yy=yy-2;
y=y+2;
if((x=y xx=yy) || (x==0) || (xx==0) x=0 y=0 xx=0 yy=0 (V.indexOf(x*10+y)==-1 || (V.size()-V.indexOf(x*10+y))%2!=0)){
V.add(x*1
文档评论(0)