ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:34.33KB ,
资源ID:22123674      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22123674.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数学建模研究商人过河问题Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数学建模研究商人过河问题Word文档格式.docx

1、,使状态按照转移律,由初始状态经有限n步到达第三步:模型求解。#include stdio.hstring.h#include stdlib.hiostreamusing namespace std;conio.hFILE *fp;/*设立文件指针,以便将它用于其他函数中*/struct along m,s;struct a *next;/*数组类型a:记录各种情况下船上的商人和仆人数,m:代表商人数 s:代表仆人数*/struct a *jj,head;/*head为头指针的链表单元(船上的人数的各种情况的链表)*/int n,total=0,js=0;/*total表示船上各种情况总数*/

2、struct aim long m1,s1,m2,s2;int n;struct aim *back,*next;/*用于建立双向的指针链表,记入符合的情况,m1,s1表示要过岸的商人数和仆人数;m2,s2表示过岸了的商人数和仆人数,n表示来回的次数*/int k1,k2;void freeit(struct aim *p)struct aim *p1=p; p1=p-back;free(p);if(p1!=NULL)p1-next=NULL;return;/*释放该单元格,并将其上的单元格的next指针还原*/int determ(struct aim *p) struct aim *p1=

3、p;if(p-s1k2)return -1;/*仆人数不能超过总仆人数*/m1k1)return -1;/*商人数不能超过总商人数*/s2/*对岸,同上*/m2s10)return -1;/*仆人数不能为负*/s2/*商人数不能为负*/m1m2m1)return -1;m2!m2)return -1;/*两岸商人数均不能小于仆人数*/while(p1!=NULL)p1=p1-if(p1-n%2=p-n%2)s1=p-s1)s2=p-s2)m1=p-m1)m2=p-m2)return -1;/*用于解决重复,算法思想:即将每次算出的链表单元与以前的相比较,若重复,则表示出现循环*/s1=0&m1

4、=0)n%2=0)return 1;else return -1;/*显然如果达到条件就说明ok了*/return 0;/*判断函数*/int sign(int n)if(n%2=0)return -1;return 1;/*符号函数*/void copyit(struct aim *p3,struct aim *p)p3-s1=p-s1;s2=p-s2;m1=p-m1;m2=p-m2;n=p-n+1;back=p;next=p3;/*复制内容函数,将p中的内容写入p3所指向的链表单元中*/void print(struct aim *p3)struct aim *p=p3;js+;while

5、(p-back)p=p-printf(n第%d种方法:n,js);fprintf(fp,int count=0;while(p) printf(%ld,%ld:%ld,%ldt,p-m1,p-s1,p-m2,p-s2);p=p-next;count+;cout一共有countn);for(i=0;icopyit(p3,p);s1-=fla-m*f;m1-=fla-s*f;s2+=fla-m2+=fla-/*运算过程,即过河过程*/j=determ(p3);/*判断,j记录判断结果*/if(j=-1)if(itotal-1)continue;elsefreeit(p3);break;int co

6、unt1=0;if(j=1)if(itotal-1)print(p3);count1+;continue;elseprint(p3);/coutcout1%d,count1););if(j=0)trans(p3);/*转移函数,即将人转移过河*/*n=0*/void main() struct aim *p,*p1;int j,a,e,f;struct a *flag;/*flag是用与记录头指针*/FILE*fpt;if(fpt=fopen(c:result.dat,w+)=0)cant creat itnexit(0);fp=fpt; system(cls printf(问题描述:三个商人

7、各带一个随从乘船过河,一只小船只能容纳X人,由他们自己划船。三个商人窃听到随从们密谋,在河的任意一岸上,只要随从的人数比上人多,就杀掉商人。但是如何乘船渡河的决策权在商人手里,商人们如何安排渡河计划确保自身安全? p=(struct aim *)malloc(sizeof(struct aim);back=NULL;s2=0;m2=0;n=1;/*设立初始头指针*/please input the total of people on the boardnn请输入船上的人数nscanf(,&n%dn,n);flag=&for(e=0;e=n;e+) for(f=0;f0&e+fm=e;s=f;

8、 flag-next=jj; flag=jj; /*/please input the total of merchant and salvent as follow: mechant,salvent;nplease input the total of merchant and salvent as follow:%ld,%ldm1,&s1);n%ld,%ldn/*/k1=p-k2=p-trans(p);fclose(fpt);getch();第一步:三个商人,三个随从的模型求解答案为:运行后的结果为:第 1 种方案:(3,3) 到 (0,0)、(3,1) 到 (0,2)、(3,2) 到 (

9、0,1)、(3,0) 到 (0,3)、(3,1) 到 (0,2)、(1,1) 到 (2,2)、(2,2) 到 (1,1)、(0,2) 到 (3,1)、(0,3) 到 (3,0)、(0,1) 到 (3,2)、(0,2) 到 (3,1)、(0,0) 到 (3,3)第 2 种方案:(3,3) 到 (0,0)、(3,1) 到 (0,2)、(3,2) 到 (0,1)、(3,0) 到 (0,3)、(3,1) 到 (0,2)、(1,1) 到 (2,2)、(2,2) 到 (1,1)、(0,2) 到 (3,1)、(0,3) 到 (3,0)、(0,1) 到 (3,2)、(1,1) 到 (2,2)、(0,0) 到

10、(3,3)第 3 种方案:(3,3) 到 (0,0)、(2,2) 到 (1,1)、(3,2) 到 (0,1)、(3,0) 到 (0,3)、(3,1) 到 (0,2)、(1,1) 到 (2,2)、(2,2) 到 (1,1)、(0,2) 到 (3,1)、(0,3) 到 (3,0)、(0,1) 到 (3,2)(、0,2) 到 (3,1)、(0,0) 到 (3,3)第 4 种方案:(3,3) 到 (0,0)、(2,2) 到 (1,1)、(3,2) 到 (0,1)、(3,0) 到 (0,3)、(3,1) 到 (0,2)、(1,1) 到 (2,2)、(2,2) 到 (1,1)、(0,2) 到 (3,1)、

11、(0,3) 到 (3,0)、(0,1) 到 (3,2)、(1,1) 到 (2,2)(0,0) 到 (3,3)第二步:四个商人三个随从,其结果为:第1种方法:4,3:0,0 3,2:1,1 4,2:0,1 2,2:2,1 3,2:1,12,1:2,2 2,2:2,1 0,2:4,1 0,3:4,0 0,1:4,21,1:3,2 0,0:4,3 一共有12步完成第2种方法:2,2 1,0:3,3 1,1:4,3 一共有14步完成第3种方法:0,2:4,1 0,0:第4种方法:2,1 1,1:3,2 2,1:2,2 0,1:第5种方法:第6种方法:3,33,2 0,1:4,2 0,2:第7种方法:第

12、8种方法:0,1 4,0:0,3 4,1:0,2第9种方法:第10种方法:第11种方法:第12种方法:第13种方法:第14种方法:第15种方法:1,1 3,3:1,0 2,2:第16种方法:第17种方法:第18种方法:第19种方法:第20种方法:第21种方法:第22种方法:2,1 4,2:0,14,0:0,2 2,1:4,10,3:4,2 1,1:第23种方法:4,2 2,1:3,20,0:4,3 一共有16步完成第24种方法:第25种方法:第26种方法:第27种方法:第28种方法:第29种方法:0,0 4,1:0,2 4,2:0,1 3,2:1,02,2:1,1 2,1:第30种方法:第31种方法:第32种方法:第33种方法:第34种方法:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1