24.cpp

来自「Knight s Tour Implementation」· C++ 代码 · 共 81 行

CPP
81
字号
//Knight tour 
//Arash nouri
//2005/12/08
#include "header24.h"
int main()
{
	cout << "Identify the begin point\nAnswer is (1,1) (2,3) (5,1) (6,0)\nrow: ";
	cin >> hCurrent;
	cout << "\ncolumn: ";
	cin >> vCurrent;
	
	board[hCurrent][vCurrent] = 1;
	system("CLS");
	
	for ( int counter = 2; counter < 65; counter++ )
	{
		cout <<"Move : " << counter - 1 << endl;
		move = isPossible (hCurrent, vCurrent);
		turn( move, hCurrent, vCurrent);
		printArray();
	}
	cout << "ey val" << (char)2 << endl;
	getch();
	return 0;
}
/*===========================================================*/
/*===========================================================*/
void printArray(void)
{
	system("cls");
	for ( int i = 0; i < rows; i++)
	{
		for ( int j = 0; j < rows; j++)
		{
			if(board[i][j] < 10 )
				cout << ' ';
			cout << board[i][j] << ' ';
		}
		cout << endl;
	}
	//	system("pause");
	
	return;
}
/*===========================================================*/
/*===========================================================*/
int isPossible(int hCurrent, int vCurrent)
{
	int movement, bestMove=-1, min = 10, nextrow, nextcol;
	
    for( movement = 7; movement >= 0; movement--)
	{
		
		nextrow = hCurrent + ver[movement];
		nextcol = vCurrent + hor[movement];
		
		if (nextrow < 0 || nextrow > 7 || nextcol < 0 || nextcol > 7 || board[nextrow][nextcol] != 0)
			continue;
		if (accessibility[nextrow][nextcol] < min)
		{
			min = accessibility[nextrow][nextcol];
			bestMove = movement;
		}			
	}
	return bestMove;
}
/*===========================================================*/
/*===========================================================*/
void turn ( int move, int& hCurrent, int& vCurrent )
{
	static count = 2;
	hCurrent += ver[move];
	vCurrent += hor[move];
	
	board[hCurrent][vCurrent] = count++;
}




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?