狼羊白菜实验报告.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

南京邮电大学通达学院

程序设计(上机)报告

题目:R004M,P005H

专业网络工程

学生姓名

班级学号

指导教师

日期

评分细那么

评分项

优秀

良好

中等

及格

不及格

遵守机房规章制度

上机表现

学习态度

根底知识水平

程序设计能力

课题功能实现情况

算法设计合理性

用户界面友好性

报告书写认真程度

报告内容完整性

文字表达清楚程度

问题答复准确性

评分等级

教师签名:

年月日

备注

注:评分等级分为五种:优秀、良好、中等、及格、不及格

狼羊白菜过河程序实验报告

问题描述

一个人带着一只羊,一条狼和一颗白菜想过河,假设他每次只能带一只羊,或者一条狼,或者一颗白菜过河,并限定人不在场时,狼和羊,或羊和白菜不能单独在一起,试编写程序求出他带一只羊,一条狼和一颗白菜过河的方法。

结构图

过河

过河

农夫选择

相斥共存

程序运行

输出结果

三、结构设计

1、狼和羊、羊和白菜不能单独在一起,涉及对象较多,而且运算步骤方法较为复杂,要用程序语言实现,需要将具体实例数字化。针对实现整个过程需要多步,不同步骤中各个事物所处位置不同的情况,可定义一个二维数组或者结构体来实现对四个对象狼、羊、白菜和一个人的表示。对于岸的两侧可以用0或者1来表示,以实现在程序设计中的简便性。

对狼羊白菜的过河步骤,没有顺序的约束,因此需要给各个事物依次进行编号,然后依次尝试,假设成功,进行下一步,使用循环或者递归算法进行程序

程序使用递归算法,为了方便将各个实例数字化。定义二维数组inta[M][4]存储每一步中各个对象所处的位置,用0-3分别表示二维数组的一维下标。具体对应为:wolf-0goat-1cabbage-2people-3

将本岸和对岸数字化,其对应为:本〔东〕岸-0对〔西〕岸-1

具体对应实例比方在第3步之后狼在本岸,羊在对岸,白菜在本岸,农夫在对岸,那么其存储结果为:

a[3][0]a[3][1]a[3][2]a[3][3]

0101

最初存储状态为:a[0][0]a[0][1]a[0][2]a[0][3]

0000

成功渡河之后,二维数组存储应为:

a[istep][0]a[istep][1]a[istep][2]a[istep][3]

1111

因此a[iStep][0]+a[iStep][1]+a[iStep][2]+a[iStep][3]==4。

题目要求狼和羊、羊和白菜不能在一起,即出现以下情况:

a[iStep][1]!=a[iStep][3](a[iStep][2]==a[iStep][1]||a[iStep][0]==a[iStep][1])那么出现错误,应返回操作。

递归开始结束a[0][0]=0,a[0][1]=0,a[0][2]=0,a[0][3]=0

递归

开始

结束

a[0][0]=0,a[0][1]=0,a[0][2]=0,a[0][3]=0

同时定义一维数组b[M]来存储每一步中人是如何过河的。设计程序中实现递归操作局部的核心程序为:

for(i=-1;i=2;i++)

{b[iStep]=i;

memcpy(a[iStep+1],a[iStep],16);a[iStep+1][3]=1-a[iStep+1][3];

if(i==-1)

{

search(iStep+1);

}

elseif(a[iStep][i]==a[iStep][3])

{a[iStep+1][i]=a[iStep+1][3];

search(iStep+1);

}

}

每次循环从-1到2依次代表渡河时为一人、带狼、带羊、带白菜通过,利用语句“b[iStep]=i”分别记录每一步中渡河方式,“a[iStep+1][i]=a[iStep+1][3]”即利用赋值方式使狼或羊或白菜与人一同到对岸或者回到本岸。假设渡河成功,那么依次输出渡河方式。“i=2”即为操作的限制,当假设i=2时仍无符合条件的方式,那么渡河失败。

在递归的

文档评论(0)

147****4268 + 关注
实名认证
内容提供者

认真 负责 是我的态度

1亿VIP精品文档

相关文档