应用全排序算法解决一道逻辑推理题

应用全排序算法解决一道逻辑推理题

ID:13642516

大小:67.50 KB

页数:8页

时间:2018-07-23

应用全排序算法解决一道逻辑推理题_第1页
应用全排序算法解决一道逻辑推理题_第2页
应用全排序算法解决一道逻辑推理题_第3页
应用全排序算法解决一道逻辑推理题_第4页
应用全排序算法解决一道逻辑推理题_第5页
资源描述:

《应用全排序算法解决一道逻辑推理题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、应用全排序算法解决一道逻辑推理题全排序算法就是列举一些字符的所有排列顺序的一种算法,比较典型的采用递归法。下面是一种简单的全排序算法。voidSwap(char*a,char*b){//交换a和b  chartemp;  temp=*a;  *a=*b;  *b=temp;}voidPerm(charlist[],intk,intm){//生成list[k:m]的所有排列方式  inti;  if(k==m){//输出一个排列方式    for(i=0;i<=m;i++)      putchar(list

2、[i]);    putchar('');  }  else//list[k:m]有多个排列方式    //递归地产生这些排列方式    for(i=k;i<=m;i++){      Swap(&list[k],&list[i]);      Perm(list,k+1,m);      Swap(&list[k],&list[i]);    }}intmain(intargc,char*argv[]){ chars[6]="01234"; Perm(s,0,4); return0;}算法作者:拉格浪

3、日,来源:燕赵草叶风2006-7-1下面我简单地应用这个算法解决一道推理问题。该推理是这样的:一天晚上,一对已婚夫妇,和他们的儿子女儿在家里发生了一起谋杀案,凶手、帮凶、被害人和目击者分别是家里的人。情况如下:(1)目击者和那个帮凶不是同一性别(2)年龄最大的和目击者不是同一性别(3)年龄最轻的和被害人不是同一性别(4)帮凶比受害者大(5)父亲是年龄最长者(6)凶手不是家中最年轻的成员凶手、帮凶、被害人和目击者分别是谁?算法的基本思路是:定义两个数组,一个数组表示家庭成员,另一个数组表示他们可能扮演的角色。

4、当找出一种排列方式,然后一个数组对另一个数组赋值,如符合题目条件,则进行输出代码如下:#include#includestructPerson{charszName[20];boolSex;//true表示男,false表示女intage;//定义年龄};voidSwap(char*a,char*b){//交换a和bchartemp;temp=*a;*a=*b;*b=temp;}voidPerm(charlist[],PersonFamilys[],PersonC

5、haracters[],intk,intm){inti=0;if(k==m){for(i=0;i<=m;i++){Characters[i]=Familys[(list[i]-48)];}//假如符合题目条件if((Characters[1].Sex!=Characters[3].Sex)//目击者和那个帮凶不是同一性别&&(Familys[0].Sex!=Characters[3].Sex)//年龄最大的和目击者不是同一性别&&(Familys[3].Sex!=Characters[2].Sex)//年龄

6、最轻的和被害人不是同一性别&&(Characters[1].age>Characters[2].age)//帮凶比受害者大&&(Characters[0].age>20)//凶手不是家中最年轻的成员){cout<<"murderer:"<

7、fbemurdered:"<

8、ist[k],&list[i]);}}}intmain(intargc,char*argv[]){//定义一个家庭数组,Familys[0]为父亲,Familys[1]为母亲,Familys[2]为子女中年龄大的一个,Familys[3]为子女中年龄小的一个PersonFamilys[4];//初始化数组成员,strcpy(Familys[0].szName,"Father");Familys[0].Sex=tr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。