人狼羊菜的编程实现

作为经典的智力问题,人狼羊菜问题的编程实现并不复杂,只要将人狼羊菜从高位到低位根据存在与否设置成0、1变量,引入可行变量与运载变量,通过穷举查找匹配得出可行的方案,直到所有变量全部转移到一边岸上即可。

代码如下:

#include<iostream>

#include<bitset>

usingnamespace std;

//人狼洋菜问题,二进制从高位到低位对应【人狼羊菜】

inttrans[4]={12,10,9,8};//运载变量

intpsb[10]={15,14,13,11,10,0,1,2,4,5};//可取状态

intbank_l=15;//左岸

intbank_r=0;//右岸

booltrans_ok(bool flag,int tran)

{//可否运输

if(flag)

return((~bank_l)&(tran))!=0?false:true;

else

return((~bank_r)&(tran))!=0?false:true;

}

boolbanks_ok()

{//两岸是否合适

bool flg1=false,flg2=false;

for (int i = 0; i < 10; i++)

if(bank_l==psb[i])

{

flg1=true;

break;

}

for (int i = 0; i < 10; i++)

if(bank_r==psb[i])

{

flg2=true;

break;

}

return flg1&flg2;

}

voidtran(bool flag,int tran)

{//执行运输之后的两岸

if(flag)

{

bank_l=bank_l-tran;

bank_r=bank_r+tran;

}

else

{

bank_r=bank_r-tran;

bank_l=bank_l+tran;

}

}

intmain()

{

bool flg=true;

cout<<bitset<4>(bank_l)<<"";

while (bank_l!=0)

{

for (int i = 0 ; i < 4;i++)

{

int r=bank_r;

int l=bank_l;

if(trans_ok(flg,trans[i]))

{

tran(flg,trans[i]);

if(banks_ok())

{//如果可以执行运载

flg=!flg;

cout<<bitset<4>(bank_l)<<"";

//输出左岸状态

}

else

{//不可以则恢复

bank_r=r;

bank_l=l;

}

}

}

}

return 0;

}

只可以得到单一可行解。

人狼羊菜问题的简单实现相关推荐

  1. C语言-人狼羊菜问题-最容易看懂的解决方法及代码

    C语言-人狼羊菜问题-最容易看懂的解决方法及代码 参考文章: (1)C语言-人狼羊菜问题-最容易看懂的解决方法及代码 (2)https://www.cnblogs.com/zandbin/p/5341 ...

  2. 车羊问题c语言编程,C语言-人狼羊菜问题-最容易看懂的解决方法及代码

    题目描述:农夫需要把狼.羊.菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊.请考虑一种方法,让农夫能够 ...

  3. 人,羊,狼,菜过河问题的计算机编程实现的matlab程序,人狼羊菜渡河问题(含Matlab程序)...

    <人狼羊菜渡河问题(含Matlab程序)>由会员分享,可在线阅读,更多相关<人狼羊菜渡河问题(含Matlab程序)(2页珍藏版)>请在人人文库网上搜索. 1.人.狼.羊.菜安全 ...

  4. 基于深度优先搜索回溯法的人狼羊菜过河模型

    基于深度优先搜索回溯法的人狼羊菜过河模型 本文介绍一个农夫过河的小模型,算法 Python 实现,感觉还挺有趣的,因原为笔者课程作业论文改版而来,所以文章内容比起其他博客文章可能会比较严肃与严谨.期待 ...

  5. php代码实现 人狼羊菜,让草根读懂“菜根”哲学:抛开“羊”与“狼”,做率真自在的人...

    " 害人之心不可有,防人之心不可无,此戒疏于虑也."" 文章做到极处,无有他奇,只是恰好:人品做到极处,无有他异,只是本然."" 宠辱不惊,闲看庭前花 ...

  6. 11.12PTA训练 人狼羊菜过河 搜索,位运算

    题意 人不在的时候狼吃羊,羊吃菜,用MWGC表示人狼羊草,箭头代表行进方向,输出所有由初始情况到最终情况的解决方案 思路 目前为止写得最头疼的搜索 因为一岸的状态确定了,另一岸也就唯一确定了,所以可以 ...

  7. c语言编程人狼羊菜过河,基于visual Studio2013解决C语言竞赛题之1079狼羊过河

        题目 解决代码及点评 /************************************************************************/ /* ...

  8. 人狼羊菜过河matlab,农夫过河(带羊,菜,狼,过河) C语言程序设计流程图

    农夫过河(带羊,菜,狼,过河) C语言程序设计流程图0 shadowylpw2013.05.15浏览830次分享举报 #include #include #include #define MAX_ST ...

  9. php代码实现 人狼羊菜,人羊菜以及狼的故事 .

    第一个问题:帮助男人用船把狼.羊.和一箱菜运送到河对面,船一次只能运一样,而且有苛刻的附加条件:当男人不在时,狼会吃羊,羊也会吃卷心菜.移动鼠标,开始解题吧 没玩过的最好玩过再看我的代码,不懂的可以问 ...

最新文章

  1. list,set,map,数组间的相互转换
  2. 35 w年薪,入职CV算法岗,我一个双非本科生如何做到的?
  3. Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
  4. PyCharm设置字体大小(亲测)
  5. A comparative study of various methods of bearing faults diagnosis using the CWRU data.-学习笔记
  6. Visual Studio 2019 preview中体验C# 8.0新语法
  7. steghide隐写术
  8. 鸿蒙os2.0将再公测,“最强”系统跑步入场,华为鸿蒙OS 2.0公测再开启,幸福来得太突然!...
  9. 总结之:CentOS 6.5基于DHCP的PXE自动化安装系统详解
  10. WLC-生成CSR操作
  11. graph面板x轴模式包括哪些_Grafana panel之Graph
  12. 3D建模设计软件Rhino 7 for Mac
  13. Java进阶:SpringMVC中自定义类型转换器
  14. Halcon慢慢来(卡尺找线、找圆)
  15. 求解Ax=0:主变量、自由变量、特殊解
  16. 5分钟带你走进webpack
  17. ps入门第9天_ps色阶ps曲线 案例:ps照片校正
  18. mql4 c语言,MT4编程之MQL4编程语言介绍
  19. do还是doing imagine加to_请问,是“imagine sb. to do sth. ”还是“imagine sb. doing sth.”?...
  20. 关于添加SATA驱动的回复(XP安装时分两个阶段)

热门文章

  1. 毕业论文怎么用WPS生成目录(太菜了之前都是手动一点点添加)
  2. 联通内测迷你SIM 将引iPad、iPhone4
  3. WebRTC → 深入分析各行业直播方案与原理
  4. 一路骑行上战场 回望自行车和摩托车“从军史”
  5. 2022最新 | 室外单目深度估计研究综述
  6. PMP工具对比(汇总版)
  7. Windows程序设置自启动
  8. Linux中级(三)Apach初涉
  9. 中国为印尼建设的高铁顺利推进,印度网友与日本网友就高铁互怼
  10. docker 基础概念 Linux Namespace