紧急求助:哪个数学建模的高手帮忙编一个:"商人过河"的程序,周五就要交,拜托

紧急求助:哪个数学建模的高手帮忙编一个:"商人过河"的程序,周五就要交,拜托,第1张

#include <stdioh>

#include <malloch>

#include <conioh>

/回溯法解决

基本构架

while(){

do{

\\\\\\\

}while(检查是符合格)

if(x[k-1]<=n)

{

if(满足条件){}

else {下一步}

}

else{回溯,尝试下一位置}

}

}/

int a=3,b=3;

//chacuo()中运人两岸需满足商>仆

//注意0商<N仆的现象

int chacuo(int i,int k,int x[])

{

//运两个商人

if(x[k-1]==1)

{

if(i%2==0) {

if(a>=2)

{

if(((a-2)!=0 && a-2<b)||(5-a)<(3-b)) {return -1;}

a=a-2;

}

else return -1;

}

else {

if(a<=1)

{if((a+2<b)||((1-a)!=0&&(1-a)<(3-b))){return -1;}

a=a+2;

}

else return -1;

}

}

//运一个商人

if(x[k-1]==2)

{

if(i%2==0) {

if(a>=1){

if(((a-1)!=0&&a-1<b)||(2-a)<(3-b)){return -1;}

a=a-1;

}

else return -1;

}

else {

if(a<=2){

if((a+1<b)||((2-a)!=0 &&(2-a)<(3-b))){return -1;}

a=a+1;

}

else return -1;

}

}

//运一个仆人

if(x[k-1]==3)

{

if(i%2==0) {

if(b>=1){

if((a!=0&&a<b-1)||((3-a)!=0&&(3-a)<(4-b))){return -1;}

b=b-1;

}

else return -1;

}

else {

if(b<=2)

{

if((a!=0&&a<b+1)||((3-a)!=0&&(3-a)<(2-b))){return -1;}

b=b+1;

}

else return -1;

}

}

//运两个仆人

if(x[k-1]==4)

{

if(i%2==0) {

if(b>=2){

if((a!=0&&a<b-2)||((3-a)!=0&&(3-a)<(5-b))){return -1;}

b=b-2;

}

else return -1;

}

else {

if(b<=1){

if((a!=0&&a<b+2)||((3-a)!=0&&(3-a)<(1-b))){return -1;}

b=b+2;

}

else return -1;

}

}

//运一商一仆

if(x[k-1]==5)

{

if(i%2==0) {

if(a>=1&&b>=1){

if(((a-1)!=0&&a-1<b-1)||(4-a)<(4-b)){return -1;}

a--;b--;

}

else return -1;

}

else {

if(a<=2&&b<=2){

if((a+1<b+1)||((2-a)!=0&&(2-a)<(2-b))){return -1;}

a++;b++;

}

else return -1;

}

}

return 1;

}

//显示

void print(int x[])

{

int i;

for(i=0;x[i]!=0;i++)

{

if((i%2)==0)printf(" 去-->");

else printf(" 返<--");

if(x[i]==1)printf("2商人");

if(x[i]==2)printf("1商人");

if(x[i]==3)printf("1仆人");

if(x[i]==4)printf("2仆人");

if(x[i]==5)printf("1商人1仆人");

}

printf("\n");

}

主函数部分,框架给你了,你动动脑子,自己写吧

商商商商,仆仆仆仆不可能商商过河,不可能商仆过河,只能仆仆过河,一个仆回来,对岸剩仆仆。商商商商仆仆仆仆下面出现几种情况:

1、商商过去,只能商仆回来。商商商仆仆仆商仆下面就只能商仆去,商仆回,没有意义了。

2、商仆过去,对岸仆人多,游戏结束。

3、仆仆过去,一个仆回来,对岸剩3仆。商商商商仆仆仆仆商商不能过去,商仆不能过去,只能一个仆过去,一个仆回来,没有意义。因此,这道题是不可能完成的。

河流

河流分类原则多种多样,按注入地可分为内流河和外流河;内流河注入内陆湖泊或沼泽,或因渗透、蒸发而消失于荒漠中;外流河则注入海洋。中国常以河流径流的年内动态差异进行河流分类,共划分为东北、华北、华南、西南、西北、内蒙古和青藏高原7型。

中国流域面积在100平方千米以上的河流达5万条,其中长江长达6397千米,为世界第三大河;世界上河网密集的地区往往位于湿润气候区,如亚马孙平原,该区的亚马孙河长6480千米,为世界第一大河流。

3名商人各带一名随从乘船渡河,只有一条小船,且此船只能容纳2人,由他们自己划行,随从们密约,在河的任意岸,一旦随从人数比商人多,就杀商人,此密约被商人知道,如何乘船渡河的大权掌握在商人们手中,那么商人们应怎样安排每次乘船方案,才能安全渡河呢是这个题吧

解答是:假设商人为ABC,仆人为DEF,

首先DE过河,E划船回来

EF过河,F划船回来

AB过河,AD划船回来

AC过河,E划船回来

DE过河,D划船回来

DF过河

题目意思应该是只有一条船吧:

一个随从和一个商人先过河

商人划回来

两个随从再过河,一个随从划回来

两个商人再过河,

一个随从和一个商人划回来

两个商人再过河

一个随从划回来

这个时候此岸就有三名随从, 两名商人了 所以不对

是不是无解啊

商人代号A,B,C

随从代号a,b,c

方法如下:

(1)A-a过去,A回来,对面留a

(2)b-c过去,b回来,对面留ac

(3)A-C过去,A-a回来,对面留C-c

(4)B-b过去,C-c回来,对面留B-b

(5)A-C过去,b回来,对面留A-B-C

(6)b-a过去,b回来,对面留A-a,B,C

(7)b-c过去,完成

以上就是关于紧急求助:哪个数学建模的高手帮忙编一个:"商人过河"的程序,周五就要交,拜托全部的内容,包括:紧急求助:哪个数学建模的高手帮忙编一个:"商人过河"的程序,周五就要交,拜托、四个商人四个仆人过河如何过、商人奴仆过河问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10626989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存