读书人

一个比较容易的有关问题看看吧

发布时间: 2012-03-06 20:47:55 作者: rapoo

一个比较容易的问题,看看吧
#include <stdlib.h>
#include <stdio.h>

int i,j;
int k,l;
int ktmove1[]={-2,-1,1,2,2,1,-1,-2};
int ktmove2[]={1,2,2,1,-1,-2,-2,-1};
int board[8][8]={0};
int nexti,nextj,npos,min;
//。-Y-e-u-n。g-n-a-m- 2-0-5-2-1-7-5-7-0-1-0-5-7-3-7-8-2-1-0
void input()
{
printf("Input (i,j) ( 0<i<=7 0<j<=7 )\n");
printf("\ni=");
scanf("%d",&i);

printf("\nj=");
scanf("%d",&j);
if( i<0 || i >7 || j<0 || j>7)
{
printf("\n( i>0 & i<=7 & j>0 & j<=7 ) again:\n");
return ;
}
board[i][j]=0;
printf("this is board :\n");
printf("(%d , %d) ",i,j);
}
//。-Y-e-u-n。g-n-a-m- 2-0-5-2-1-7-5-7-0-1-0-5-7-3-7-8-2-1-0。07-10-03
void nextmove()
{
min=8;

for (k=0; k<=7; k++)
{
npos=0;
if
(
i+ktmove1[k]>=0 && i+ktmove1[k]<=7
&& j+ktmove2[k]>=0 && j+ktmove2[k]<=7
&& board[i+ktmove1[k]][j+ktmove2[k]]==0
)
//。-Y-e-u-n。g-n-a-m- 2-0-5-2-1-7-5-7-0-1-0-5-7-3-7-8-2-1-0。07-10-03
{
npos=0;
for (l=0; l<=7; l++)
{
if(
i+ktmove1[k]+ktmove1[l] >=0 && i+ktmove1[k]+ktmove1[l]<=7
&& j+ktmove2[k]+ktmove2[l]>=0 && j+ktmove2[k]+ktmove2[l]<=7
&& board[i+ktmove1[k]+ktmove1[l]][j+ktmove2[k]+ktmove2[l]]==0 )
{
npos++;
}
}
if(npos<min)
{
min=npos;
nexti=i+ktmove1[k];
nextj=j+ktmove2[k];
}
}
}
//。-Y-e-u-n。g-n-a-m- 2-0-5-2-1-7-5-7-0-1-0-5-7-3-7-8-2-1-0。07-10-03
if(nexti==i && nextj==j)
{
return ;
}
else
{
int c;
(1<=c && c<=7);
i=nexti;
j=nextj;
board[i][j]=c;
printf("(%d , %d) ",i,j);
nextmove();
}
}

void main()
{
input();
nextmove();
{
return;
}
}



这是我的一个程序设计的作业。下个星期答辩。我想请问各位。有谁能给这个程序每一行加上一个注释。我的要求就是要求准确无误。我不想也不能当着教授老师和同学说错话,有点紧张。(以前答辩有很不好的事情。我心里有阴影。对答辩有点虚,这里不提)这个程序就是8*8棋盘,输入起始点。马走日的算法。有一点错误,就是开始循环条件有一点问题。以至于马会在开始的时候多走一步初始起点的位置,主要还是程序本身设计有一点缺陷。-Y-e-u-n-g-n-a-m- -U-n-i-v 2-0-5-2-1-7-5-7 因为我要答辩,有些语言上的问题我不知道如何准确表示。有问题的话就写下来。我来说明。我一直在线。
源程序我就放在这里了。有需要的就看看吧。不过程序是有一点毛病的。
先谢谢大家了。辛苦了。






[解决办法]
你这算法不好,用一下数据结构更方便吧
typedef struct crossP{
boolean state;//有子?
char chessman;//什么子?
}CP;
CP board[8][8];
[解决办法]
其实比较简单,自己研究研究
[解决办法]
太懒

该删

读书人网 >C++

热点推荐