农夫过河问题源代码.doc

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

#includeiostream.h #define M 20 typedef struct node { int front; int rear; int data[M]; }SeqQueue; SeqQueue *creat(SeqQueue *Q)//创建队列 { Q=new SeqQueue; if(Q==NULL) cout无空间; else { Q-front=0; Q-rear=0; } return Q; } int empty(SeqQueue *Q)//判空 { return (Q-front==Q-rear); } void insequeue(SeqQueue *Q,int x) { if(((Q-rear+1)%M)==Q-rear) cout队列已满!endl; else { Q-data[Q-rear]=x; Q-rear=(Q-rear+1)%M; } } void desequeue(SeqQueue *Q) { if(Q-rear==Q-front) { cout队已空; } else Q-front=(Q-front+1)%M; } int frontsequeue(SeqQueue *Q) { if(Q-rear==Q-front) { cout队已空; return 0; } else return (Q-data[Q-front]); } //0x01:0000 0001 羊 //0x02:0000 0010 白菜 //0x04:0000 0100 狼 //0x08:0000 1000 农夫 int farmer(int location) { return (0!=(location 0x08)); } int wolf(int location) { return (0!=(location 0x04)); } int cabbage(int location) { return (0!=(location 0x02)); } int goat(int location) { return (0!=(location 0x01)); } int safe(int location) { if((goat(location)==cabbage(location)) (goat(location)!=farmer(location))) return 0; if((goat(location)==wolf(location)) (goat(location)!=farmer(location))) return 0; return 1; } void printfarmer(int location) { if(location8) cout农夫:北岸\t; else cout农夫:南岸\t; } void printwolf(int location) { if((location12location7)||location4) { cout狼:北岸\t\t; } else cout狼:南岸\t\t; } void printfcabbage(int location) { if(location%4==0||location%4==1) { cout白菜:北岸\t; } else cout白菜:南岸\t; } void printfgoat(int location) { if(location%2==0) { cout羊:北岸\t; } else cout羊:南岸\t; } void main() { int i,m,newlocation,location,route[M];//m为正在移动的物品route[M]用于记录已考虑的状态路径 SeqQueue *Q; Q=creat(Q); insequeue(Q,0x00); for(i=0;i16;i++) route[i]=-1; route[0]=0; cout---------------------------农夫过河问题-----------------------------endlendl; while(!empty(Q)(route[15]==-1))//Q非空或已全部被访问过 { location=frontsequeue(Q);//取对头状态为当前状态 desequeue(Q);//队头元素出队 for(m=1;m=8;m=1)//考虑各种物品移动 { if((0!

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档