没有合适的资源?快使用搜索试试~ 我知道了~
基于C++的农夫过河问题算法设计与实现方法
5星 · 超过95%的资源 12 下载量 145 浏览量
2020-08-29
10:48:30
上传
评论 3
收藏 118KB PDF 举报
温馨提示
试读
3页
主要介绍了基于C++的农夫过河问题算法设计与实现方法,简单描述了农夫过河问题,并结合实例形式详细分析了基于C++实现农夫过河问题的相关算法实现步骤与操作技巧,需要的朋友可以参考下
资源推荐
资源详情
资源评论
基于基于C++的农夫过河问题算法设计与实现方法的农夫过河问题算法设计与实现方法
主要介绍了基于C++的农夫过河问题算法设计与实现方法,简单描述了农夫过河问题,并结合实例形式详细分析了
基于C++实现农夫过河问题的相关算法实现步骤与操作技巧,需要的朋友可以参考下
本文实例讲述了基于C++的农夫过河问题算法设计与实现方法。分享给大家供大家参考,具体如下:
问题描述:问题描述:
一个农夫带着—只狼、一只羊和—棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下
他和—件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊,羊会吃白菜,所以农
夫不能留下羊和白菜自己离开,也不能留下狼和羊自己离开,而狼不吃白菜。请求出农夫将所有的东西运过河的方案。
实现上述求解的搜索过程可以采用两种不同的策略:一种广度优先搜索,另一种深度优先搜索。这里介绍在广度优先搜索方法
中采用的数据结构设计。
程序源码:程序源码:
/***********************************************
* 农夫过河问题(P64 队列的应用)
* 约定:用四位二进制数分别顺序表示农夫、狼、白菜和羊的状态
* 即:{dddd} <=> {Farmer, Wolf, Cabbage, Goat} 其中:d={0,1}
* 说明:0表示在东岸 1表示在西岸,初始状态为0000,终止状态为1111
************************************************/
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 16
typedef int EntryType;
typedef struct queue
{
EntryType data[MAXSIZE];
int front,rear; //front队头,rear队尾
}SeqQueue, * SeqQueuePtr;
// 创建空队列
SeqQueuePtr create_sequeue(void)
{
SeqQueuePtr pque;
pque = (SeqQueuePtr)malloc(sizeof(SeqQueue));
if(pque){
pque->front = 0;
pque->rear = 0;
}
else{
printf("Error: malloc() failed, out of memory!");
}
return(pque);
}
int is_queEmpty(SeqQueuePtr pque)
{
return( pque->front == pque->rear );
}
int is_queFull(SeqQueuePtr pque)
{
return( (pque->rear+1)%MAXSIZE == pque->front);
}
// 入队
int enqueue(SeqQueuePtr pque, EntryType x)
{
if(is_queFull(pque)){
printf("Queue Overflow Error: trying to add an element onto a full queue");
return 1;
}
else{
pque->data[pque->rear] = x;
pque->rear = (pque->rear + 1) % MAXSIZE;
return 0;
}
}
// 队首元素出队(返回0表示出队异常,出队操作前队列为空)
int dequeue(SeqQueuePtr pque, EntryType * e)
{
if(is_queEmpty(pque)){
printf("Empty Queue.");
return 0;
}
else{
*e = pque->data[pque->front];
资源评论
- 马克love2023-07-25:这篇文件通过简洁的语言,详细介绍了基于C的农夫过河问题算法设计与实现方法,实用性强。
- 艾法2023-07-25:这篇文件对农夫过河问题的算法设计进行了清晰的阐述,值得进一步研究和探索。
- 周林深2023-07-25:作者深入浅出地解释了农夫过河问题的算法,让人易于理解和实践。
- 查理捡钢镚2023-07-25:这篇文件对农夫过河问题的算法进行了有效实现,展现了C语言在问题求解中的优势和应用价值。
- RandyRhoads2023-07-25:对于计算机科学爱好者来说,这篇文章关于农夫过河问题的算法设计讲解独到,简练而实用。
weixin_38738977
- 粉丝: 6
- 资源: 971
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功