用的是c代码,回溯法
int const size = 6;
bool checkplace(int *board, int pos)
{
if(pos == 0)
{
return true;
}
int i = 0;
for(i = 0;i < pos; i++)
{
if((board == board[pos]) || ( board[pos] == pos ))
return false;
}
return true;
}
void printout(int *board)
{
int i = 0;
for(i = 0; i < size; i++)
{
cout<<board;
}
cout<<endl<<endl;
}
void main()
{
int board[size] = {0};
int row = 0;
int count = 0;
while( row+1 )
{
board[row]++;
while ( (board[row] <= size) && (checkplace(board, row) == false) )
{
board[row]++;
}
if(board[row] <= size)
{
if( row == size -1)
{
printout(board);
count++;
}
else
{
row++;
board[row] = 0;
}
}
else
{
row--;
}
}
cout<<"The Number is "<<count<<endl;
return ;
}