第一范文网 - 专业文章范例文档资料分享平台

C++实现传教士与野人过河问题实验报告

来源:用户分享 时间:2025/5/30 18:19:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

//一个野人,一个传教士

if (lastcurrentState.boat == 1)

operation.push_back(\左岸->右岸\); operation.push_back(\右岸->左岸\); else

currentState.churchL = lastcurrentState.churchL - 1 * lastcurrentState.boat; currentState.wildL = lastcurrentState.wildL - 1 * lastcurrentState.boat; currentState.churchR = lastcurrentState.churchR + 1 * lastcurrentState.boat; currentState.wildR = lastcurrentState.wildR + 1 * lastcurrentState.boat; currentState.boat = -lastcurrentState.boat; lastParameters.push_back(currentState);

CvsWdfs(currentState, lastParameters,operation, 0); operation.pop_back(); lastParameters.pop_back(); //一个传教士过河

if (lastcurrentState.boat == 1)

operation.push_back(\左岸->右岸\); operation.push_back(\右岸->左岸\); else

currentState.churchL = lastcurrentState.churchL - 1 * lastcurrentState.boat; currentState.wildL = lastcurrentState.wildL;

currentState.churchR = lastcurrentState.churchR + 1 * lastcurrentState.boat; currentState.wildR = lastcurrentState.wildR; currentState.boat = -lastcurrentState.boat; lastParameters.push_back(currentState);

CvsWdfs(currentState, lastParameters, operation, 0); operation.pop_back(); lastParameters.pop_back(); //一个野人过河

if (lastcurrentState.boat == 1)

operation.push_back(\左岸->右岸\); operation.push_back(\右岸->左岸\); else

currentState.churchL = lastcurrentState.churchL;

currentState.wildL = lastcurrentState.wildL - 1 * lastcurrentState.boat; currentState.churchR = lastcurrentState.churchR;

currentState.wildR = lastcurrentState.wildR + 1 * lastcurrentState.boat; currentState.boat = -lastcurrentState.boat; lastParameters.push_back(currentState);

CvsWdfs(currentState, lastParameters, operation, 0); operation.pop_back(); lastParameters.pop_back();

}

return 0;

int main(){ }

system(\); return 0;

intchurchL = 3, wildL = 3, churchR = 0, wildR = 0;//分别用来计算左岸和右岸的传教士和vectorlastParameters;//保存每一步移动操作的两岸传教士、野人人数 vector operation;//保存当前操作的描述

//初始化左岸参数,可以认为是从右岸移动至左岸的操作 //boat=-1 表示船在左岸,boat=1表示船在右岸 riverSidescurrentState; currentState.churchL = 3; currentState.wildL = 3; currentState.churchR = 0; currentState.wildR = 0; currentState.boat = 1;

lastParameters.push_back(currentState);

CvsWdfs(currentState, lastParameters,operation, 0); lastParameters.pop_back(); 野人

4程序结果

最终得到如图2、3所示的四种过河方式。

图 2 过河方式1、2

图 3 过河方式3、4

C++实现传教士与野人过河问题实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7l2uj17g8p6trx01723y3gzju6vsv000dgm_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top