65,210
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
#define size 5
int num=0; //用来统计一共有多少种;
void put(bool chess[size][size],int x,int y);
bool finish(bool chess[size][size]);
//bool chess[size][size] true表示已经走过了,false表示没有走过。
int main()
{ bool chess[size][size];
//初始化表格;
int i,j;
for (i = 0 ; i < size ; i++)
for (j = 0 ; j< size ; j++)
chess[i][j]=false;
//放置;
put(chess,0,0);
cout << num;
system("pause");
}
void put(bool chess[size][size],int x,int y)
{ int i,j;
chess[x][y]=true;
if ( !finish(chess) ) //没有结束;
for (i = 0 ; i < size ; i++)
for (j = 0 ; j< size ; j++)
{ if ( (x-i)*(x-i) + (y-j)*(y-j) == 5 ) //满足两点距离的平方为5,所以可以走;
put(chess,i,j);
}
else
num++;
}
bool finish(bool chess[size][size])
{ int i,j;
for (i = 0 ; i < size ; i++)
for (j = 0 ; j< size ; j++)
if ( chess[i][j] != true ) return false;
return true;
}
#include <iostream>
#include <string>
using namespace std;
#define size 5
int num=0; //用来统计一共有多少种;
void put(bool chess[size][size],int x,int y);
bool finish(bool chess[size][size]);
//bool chess[size][size] true表示已经走过了,false表示没有走过。
void put(bool chess[size][size],int x,int y)
{
if( finish( chess ) )
return;
else
{
int nX, nY, nDistance;
//寻找下一点
for( int i = 0; i < size * size; ++i )
{
nX = i%size;
nY = i/size;
nDistance = (x-nX)*(x-nX) + (y-nY)*(y-nY);
if ( nDistance > 0 && nDistance <=2 && !chess[nX][nY] ) //满足两点距离小于等于2
//且不能为自身
{
chess[nX][nY] = true;
put(chess,nX,nY);
break;
}
}
num++;
}
}
bool finish(bool chess[size][size])
{
int i,j;
for (i = 0 ; i < size ; i++)
for (j = 0 ; j< size ; j++)
if ( chess[i][j] != true ) return false;
return true;
}
int main(int argc, char *argv[])
{
bool chess[size][size];
//初始化表格;
int i,j;
for (i = 0 ; i < size ; i++)
for (j = 0 ; j< size ; j++)
chess[i][j]=false;
//放置;
chess[0][0] = true;
put(chess,0,0);
cout<<num<<endl;
for (i = 0 ; i < size ; i++)
{
for (j = 0 ; j< size ; j++)
cout<<chess[i][j]<<" ";
cout<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}