搜档网
当前位置:搜档网 › 八字码

八字码

八字码
八字码

人工智能程序作业

八字码问题

计算机日语强化0801

张璨

200881723

运行环境codeblocks(不知道VC上是否可用)#include

#include

#include

#include

using namespace std;

structhh

{

int map[10];

intzt;

intkong;

intqian;

}queue[1000000];

intjcs[10];

bool visit[1000000];

intgetzt(int map[])

{

intzt=0,i,j;

for(i=0;i<9;++i)

{

int s=0;

for(j=i+1;j<9;++j)

{

if(map[i]>map[j])s++;

}

zt+=s*jcs[map[i]];

}

returnzt;

}

void copy(intaa[],int b[])

{

int i;

for(i=0;i<9;++i)

{

aa[i]=b[i];

}

}

{

freopen("in.txt","r",stdin);

inti,j;

jcs[0]=1;

for(i=1;i<9;++i)jcs[i]=jcs[i-1]*i;

intmubiao[10]={1,2,3,8,0,4,7,6,5};

printf("请输入八字码问题的初始状态(空白用0):\n"); int map[10];

for(i=0;i<9;++i)scanf("%d",&map[i]);

int head=0,end=1;

intczt=getzt(map);

for(i=0;i<9;++i)

{

queue[0].map[i]=map[i];

if(map[i]==0)queue[0].kong=i;

}

queue[0].zt=czt;

queue[0].qian=-1;

visit[czt]=1;

intmzt=getzt(mubiao);

while(head

{

//cout<

hhdq=queue[head];

if(dq.zt==mzt)break;

intlmap[10];

if(dq.kong>2)

{

copy(lmap,dq.map);

lmap[dq.kong]=lmap[dq.kong-3];

lmap[dq.kong-3]=0;

intxzt=getzt(lmap);

if(!visit[xzt])

{

copy(queue[end].map,lmap);

queue[end].zt=xzt;

queue[end].kong=dq.kong-3;

queue[end++].qian=head;

visit[xzt]=1;

}

}

if(dq.kong<6)

copy(lmap,dq.map);

lmap[dq.kong]=lmap[dq.kong+3]; lmap[dq.kong+3]=0;

intxzt=getzt(lmap);

if(!visit[xzt])

{

copy(queue[end].map,lmap); queue[end].zt=xzt;

queue[end].kong=dq.kong+3; queue[end++].qian=head;

visit[xzt]=1;

}

}

if(dq.kong%3>0)

{

copy(lmap,dq.map);

lmap[dq.kong]=lmap[dq.kong-1]; lmap[dq.kong-1]=0;

intxzt=getzt(lmap);

if(!visit[xzt])

{

copy(queue[end].map,lmap); queue[end].zt=xzt;

queue[end].kong=dq.kong-1; queue[end++].qian=head;

visit[xzt]=1;

}

}

if(dq.kong%3<2)

{

copy(lmap,dq.map);

lmap[dq.kong]=lmap[dq.kong+1]; lmap[dq.kong+1]=0;

intxzt=getzt(lmap);

if(!visit[xzt])

{

copy(queue[end].map,lmap); queue[end].zt=xzt;

queue[end].kong=dq.kong+1; queue[end++].qian=head;

}

}

head++;

}

// cout<

if(head==end)

{

printf("对不起,无解!\n");

}

int stack[100000],top=0;

int pre=head;

do{

stack[top++]=pre;

pre=queue[pre].qian;

}while(queue[pre].qian!=-1);

printf("通过%d 步移动成功!步骤为:\n",top); for(i=--top;i>=0;--i)

{

for(j=0;j<9;++j)

{

printf("%d ",queue[stack[i]].map[j]);

if(j%3==2)printf("\n");

}

printf("\n");

}

return 0;

}

八字基础知识教材1

张一勺《揭开密中秘》节选 第一部分命理基础知识 第一节命理基本构成要素 一、阴阳五行 古代人们通过对世界的观察,认为世界万物分两类即阴阳,如日月、男女、雄雌、光明、黑暗、正面、反面等,并并且阴阳是既相互对立又相互统一的。两者之间又在相互转化,人们对阴阳的认识形成了一种理论叫阴阳学说。 阴阳的相互转化的运动变化过程之中,产生了五种物质,通过五种自然物质的配合变化运动,相互作用才产生了很多很多不同类型的新的物质,这五种物质是金木水火土,是最古老最根本的五种基本原素,一切物质的基础都是五行在特定的条件下转化而来。 五行的生克关系 五行相生表现为,木生火,火生土,土生金,金生水,五行相克;表现为,金克木,木克土,土克水,水克火,火克金,五行相生相克的原理; 一、五行相生:指木生火,火生土,土生金,金生水,水生木。 (1)、木性温暖,火仗其中,钻灼而生,故木生火。 (2)、火生土者,是因为火热故能焚木,木焚成灰,灰洒土地变成土,故火生土。

(3)、土生金者,金据石依山,津润而生,聚土成山,土必生石,故土生金。 (4)、金生水者,是因为少阴之气,温润流泽,销火断金,也可变为水,所以金生水。 (5)、水生木,因为水温润使树木生长茁壮。 二、五行相克指,金克木,木克土,土克水,水克火,火克金,

(1)众胜寡,水胜火, (2)精胜坚,故火胜金 (3)刚胜柔,故金胜木, (4)专胜散,故木胜土, (5)实胜虚,故土胜水 三、五行过剩与反悔 五行不能太胜和不足,因为物极必反这点《命理约言》对无行的生克关系做了精辟的解释。 金:金旺得火方成器皿 金能生水,水多金沉,强金得水,方挫其锋。 金能克木,木多金缺,木弱逢金,必为坎坷。 金赖土生,土多金埋,土能生金,金多土变。 火:火旺得水,土多火悔强火得土,方止其焰。 火能克金,金多火息,金弱遇火,必见销熔。 火赖木生,木多火枳,木能生火,火多木焚。 水:水旺得土,方成池沼。 水能生木,木多水缩,强水得木,方泄其势。 水能克火,火多水干,火弱遇水必为息灭。 水赖金生,金多水浊,金能生水,水多金沉。

相关主题