📄 choose.c
字号:
#include "source.h"
int choose(int a[8][8],int c,int b)
{
Chk *local,*p1,*p2;
int count=0,m,flag=0,n,flag1[1]={0},i,j;
local=(Chk *)malloc(SIZE);
local->prior=local->next=NULL;
a[c][b]=++count;
local->i=c;local->j=b;
local->tag=0;
j=0;
while(count!=64)
{
j++;
if(local->tag==0)
{
local->HTry1[0]=local->i-2;local->HTry2[0]=local->j+1;
local->HTry1[1]=local->i-1;local->HTry2[1]=local->j+2;
local->HTry1[2]=local->i+1;local->HTry2[2]=local->j+2;
local->HTry1[3]=local->i+2;local->HTry2[3]=local->j+1;
local->HTry1[4]=local->i+2;local->HTry2[4]=local->j-1;
local->HTry1[5]=local->i+1;local->HTry2[5]=local->j-2;
local->HTry1[6]=local->i-1;local->HTry2[6]=local->j-2;
local->HTry1[7]=local->i-2;local->HTry2[7]=local->j-1;
local->tag=1;
}
if(local->prior!=NULL)
{
for(i=0;i<8;i++)
if(local->prior->i==local->HTry1[i]&&local->prior->j==local->HTry2[i])
{
local->HTry1[i]=-2;
local->HTry2[i]=-2;
break;
}
}
for(m=0;m<8;m++)
{
if(local->HTry1[m]>=0&&local->HTry1[m]<=7)
if(local->HTry2[m]>=0&&local->HTry2[m]<=7)
{
if(a[local->HTry1[m]][local->HTry2[m]]!=0)
continue;
else
{
a[local->HTry1[m]][local->HTry2[m]]=++count;
if(flag1[0]==0)
{
if(flag>0)
{
p1=local->next;
p2=local->next;
for(i=0;i<8;i++)
{
if(local->HTry1[i]==local->next->i&&local->HTry2[i]==local->next->j)
{
local->HTry1[i]=-2;
local->HTry2[i]=-2;
}
}
for(;p1!=NULL;)
{
a[p1->i][p1->j]=0;
p2=p1->next;
free(p1);
p1=p2;
}
local->next=NULL;
flag=0;
}
}
n=m;
local->next=(Chk *)malloc(SIZE);
local->next->prior=local;
local=local->next;
local->i=local->prior->HTry1[m];local->j=local->prior->HTry2[m];
local->next=NULL;
local->tag=0;
if(flag1[0]==1)
{
if(flag>0)
{
for(i=0;i<8;i++)
{
if(local->prior->HTry1[i]==local->i&&local->prior->HTry2[i]==local->j)
{
local->prior->HTry1[i]=-2;
local->prior->HTry2[i]=-2;
}
}
flag=0;
}
}
break;
}
}
}
if(m==8)
{
local=Recoll(a,local,flag1);
flag=1;
count--;
}
if(local==NULL)
{
flag1[0]=1;
for(i=0;i<=7;i++)
{
for(j=0;j<=7;j++)
a[i][j]=0;
}
count=0;
local=(Chk *)malloc(SIZE);
local->prior=local->next=NULL;
a[c][b]=++count;
local->i=c;local->j=b;
local->tag=0;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -