C语言编程过河问题,求解:过河有关问题
C/C++ code#include
char *name[] = {"农夫","狼","羊","菜"};
char *name1[] = {"去对岸","回本岸"};
struct way
{
int num;//农夫带走的东西 包括他自己
bool go_back;//带到那里去0表示去对岸 1表示会本岸
};
bool now[4] = {0};//当前状态0表示在本岸1表示在对岸
bool foot[2][2][2][2] = {0};//状态标记表
bool Kill(bool a,bool b,bool c,bool d)//判断是否会吃掉
{
if((c == b && a != c) || (d == c && a != c))
return true;
return false;
}
bool dfs(way w[],int sumway,bool now[])
{
if(4 == now[0]+now[1]+now[2]+now[3])//如果都在对岸
{
for(int i = 0;i
printf("农夫带着%s%s\n",name[w[i].num],name1[w[i].go_back]);
printf("\n\n");
return true;
}
int i;
if(0 == now[0])//如果农夫在本岸
{
for(i = 0;i<4;i++)//遍历他所能带走的东西(包括带走他自己)
{
if(0 == now[i])
{
now[0] = now[i] = 1;//试探
if(!foot[now[0]][now[1]][now[2]][now[3]])//判断
{
if(!Kill(now[0],now[1],now[2],now[3]))
{
foot[now[0]][now[1]][now[2]][now[3]] = true;//试探
w[sumway].num = i; w[sumway++].go_back = 0;//记录路径
dfs(w,sumway,now);//继续搜索
foot[now[0]][now[1]][now[2]][now[3]] = false;//回溯
sumway--;
}
}
now[0] = now[i] = 0;//回溯
}
}
return false;
}
else //如果农夫在对岸 下面注释同上
{
for(i = 0;i<4;i++)
{
if(1 == now[i])
{
now[0] = now[i] = 0;
if(!foot[now[0]][now[1]][now[2]][now[3]])
{
if(!Kill(now[0],now[1],now[2],now[3]))
{
foot[now[0]][now[1]][now[2]][now[3]] = true;
w[sumway].num = i; w[sumway++].go_back = 1;
if(dfs(w,sumway,now))
return true;
foot[now[0]][now[1]][now[2]][now[3]] = false;
sumway--;
}
}
now[0] = now[i] = 1;
}
}
return false;
}
}
int main()
{
way w[100] = {0};
dfs(w,0,now);
return 0;
}
------解决方案--------------------
action_init();
要放在 createG(); 前
这样矩阵就有内容了
C语言编程过河问题,求解:过河有关问题相关推荐
- c语言编程人狼羊菜过河,基于visual Studio2013解决C语言竞赛题之1079狼羊过河
题目 解决代码及点评 /************************************************************************/ /* ...
- 一元二次方程通解方程c语言编程,一元二次方程求解程序完整代码
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面的代码是我刚才无聊写的.对于简单的一元多次方程的迭代 #include #include #include #define MAXTIMES 5 ty ...
- 夫妻过河 c语言程序,终稿求解夫妻过河问题.doc最终版(范文1)
<求解夫妻过河问题.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)求解夫妻过河问题.doc(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库 ...
- 青蛙爬井c语言编程,青蛙过河(ACM)
青蛙过河(ACM) 青蛙过河 Time Limit:1000MS Memory Limit:32767K Total Submit:84 Accepted:51 Description 一条小溪尺寸不 ...
- 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值。
一.题目描述 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值. 二.分析求解 这是一道类似数列的求和问题,考察的是循环的使用, ...
- c语言填数字游戏求解过程解读,c语言编程--数字游戏.doc
c语言编程--数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...
- 一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。
import java.util.ArrayList; import java.util.List; import java.util.Random;/*** 一位老农带着猫.狗.鱼过河,河边有一条船 ...
- c语言程序编程线性方程,C语言编程求解线性方程.doc
C语言编程求解线性方程 本 科 专 业 学 年 论 文 题目:线性方程组求解方法比较 姓 名 郭 凤 专 业 计算机科学与技术专业 班 级 08级本科(2)班 指导教师 刘 晓 娜 完成日期:2010 ...
- c语言 最大公约数 最小公倍数的编程,C语言三种算法求解最大公约数与最小公倍数...
C语言三种算法求解最大公约数与最小公倍数 最大公约数与最小公倍数的求解是很多初学C的人所面临的一道问题.当然这道问题并不难解答,也有很多人已经写过相关的博客,我在此书写此篇博客,一是为了让自己能够夯实 ...
- 线性规划编程求解C语言,C语言大作报告线性规划求解基科3字班.doc
C语言大作报告线性规划求解基科3字班.doc C语言大作业选题设计报告线性规划求解程序一. 概述运筹学(OR)作为强有力的数学工具,在管理科学.决策科学中起到了举足轻重的作用.当最优化的约束条件是线性 ...
最新文章
- C++ 类模板的使用
- java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误
- R语言ggplot2可视化并自定义配置图例的位置到可视化图像的顶部、配置折叠成两行显示图例、并添加图像形状的子图(ggplot2 legend in two rows with guides fill
- mysql中的意向锁IS,IX
- 【洛谷P1381】单词背诵
- Python的collections之namedtuple的使用及其优势
- fold函数_Java中使用Map and Fold进行函数式编程
- 轮盘赌算法的java实现算例
- JavaScript正则表达式的坑很深
- .net MVC在服务端代码输出html字符串
- WinCE全屏手写输入法
- 未来IT互联网企业的发展前景
- 重写equals方法原则
- JavaScript:通过点击按钮实现个人信息的录入,进而输出个人信息
- 数据库系统原理--------层次模型
- SMBus与I2C的区别
- 3、乐趣国学—“色难”
- macOS Catalina 10.15.7正式版 CDR/ISO镜像 for VMware
- PDF查找的快捷键是什么?如何更详细查找
- 在线支付——微信支付宝二维码合一