📄 hon.c
字号:
#include<stdio.h>
typedef struct a
{
int x;
int y;
}a;
a A[64];
void input(a A[],int x,int y)
{
int i=0;
while(A[i].x!=0)
{
if(A[i].x==x&&A[i].y==y)break; //比较是否为相同的坐标点
else i++;
}
if(A[i].x==0){
A[i].x=x;
A[i].y=y;
}
}
void output(int N,int x,int y)
{
if(x>=1&&x<=8&&y>=1&&y<=8&&N>=0)
{
if(N==0) input(A,x,y);
else
{
output( N-1, x-1, y-2);
output( N-1, x-1, y+2);
output( N-1, x+1, y-2);
output( N-1, x+1, y+2);
output( N-1, x-2, y+1);
output( N-1, x-2, y-1);
output( N-1, x+2, y+1);
output( N-1, x+2, y-1);
}
}
}
void main()
{
int x,y,n,c=0,p,i=0;
for( p=0;p<64;p++)
{
A[p].x=0;
A[p].y=0;
}
do
{
printf("Please input the X :"); //马的初始横坐标
scanf("%d",&x);
printf("Please input the Y :"); //马的初始纵坐标
scanf("%d",&y);
printf("please input the n :"); //马行的步数
scanf("%d",&n); //由于算法要求一定的时间,建议n不要大于10
if(x>8||y>8||x<1||y<1)
printf("Error! Try it again,X(1~8),Y(1~8)\n");
}
while(x>8||y>8||x<1||y<1);
output(n,x,y);
while(A[i].x!=0)
{
c++;
printf("this is the %d\tpoint (%d,%d)\n",c,A[i].x,A[i].y);
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -