回溯法解题序
#include "回溯推理.h"
//组合元素名称
char *YS[]={NULL,"红色","黄色","绿色","蓝色","白色"};
char *GJ[]={NULL,"挪威人","英国人","德国人","丹麦人","瑞典人"};
char *CW[]={NULL,"养狗","养猫","养鱼","养鸟","养马"};
char *YL[]={NULL,"喝 茶","喝牛奶","喝咖啡","喝啤酒","喝 水"};
char *YP[]={NULL,"抽Blends烟","抽BlueMaster烟","抽Dunhill烟","抽PallMall烟","抽Prince烟"};
TuiLi::TuiLi()
{
//初始化房子数组
int x;
for(x=0;x<5;x++)
{
Fz[x].ys=0;
Fz[x].gj=0;
Fz[x].cw=0;
Fz[x].yl=0;
Fz[x].yp=0;
}
}
TuiLi::~TuiLi()
{
}
void TuiLi::init_biao() //初始组合表
{
//组合标志
int a,b,c,d,e;
int x;
int i=0;
//生成一张12345的数字组合表
for (x=12345;x<=54321;x++)
{
e = x % 10;
d = x / 10 % 10;
c = x / 100 % 10;
b = x / 1000 % 10;
a = x / 10000 % 10;
if (a != b && a != c && a != d && a != e && b != c && b != d && b != e
&& c != d && c != e && d != e && a > 0 && a < 6 && b > 0 && b < 6
&& c > 0 && c < 6 && d > 0 && d < 6 && e > 0 && e < 6)
{
Biao[i][0]=a;
Biao[i][1]=b;
Biao[i][2]=c;
Biao[i][3]=d;
Biao[i][4]=e;
}
}
}
void TuiLi::print() //屏幕输出推理结果
{
GetLocalTime(&TIME);//获得系统当前时间
printf("推理结果获取时间为:%d年%d月%d日%d时%d分%d秒",TIME.wYear,TIME.wMonth,TIME.wDay,TIME.wHour,TIME.wMinute,TIME.wSecond);
printf("%s %s %s %s %s",YS[Fz[0].ys],GJ[Fz[0].gj],CW[Fz[0].cw],YL[Fz[0].yl],YP[Fz[0].yp]);
printf("%s %s %s %s %s",YS[Fz[1].ys],GJ[Fz[1].gj],CW[Fz[1].cw],YL[Fz[1].yl],YP[Fz[1].yp]);
printf("%s %s %s %s %s",YS[Fz[2].ys],GJ[Fz[2].gj],CW[Fz[2].cw],YL[Fz[2].yl],YP[Fz[2].yp]);
printf("%s %s %s %s %s",YS[Fz[3].ys],GJ[Fz[3].gj],CW[Fz[3].cw],YL[Fz[3].yl],YP[Fz[3].yp]);
printf("%s %s %s %s %s",YS[Fz[4].ys],GJ[Fz[4].gj],CW[Fz[4].cw],YL[Fz[4].yl],YP[Fz[4].yp]);
}
void TuiLi::gx()
{
int x;
int z=0;
for(x=0;x<5;x++)
{
Fz[x].ys=sz[z];
z++;
}
for(x=0;x<5;x++)
{
Fz[x].gj=sz[z];
z++;
}
for(x=0;x<5;x++)
{
Fz[x].cw=sz[z];
z++;
}
for(x=0;x<5;x++)
{
Fz[x].yl=sz[z];
z++;
}
for(x=0;x<5;x++)
{
Fz[x].yp=sz[z];
z++;
}
}
参考http://www.51hei.com/mcu/2640.html
和http://www.51hei.com/mcu/2641.html
回溯法解题 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)