⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knight moves.cpp

📁 一个经典的acm题
💻 CPP
字号:
#include <fstream.h>
int startx,starty,endx,endy;
int off_x[8]={ -1,-1,-2,-2,2,2,1,1};
int off_y[8]={ -2, 2, 1,-1,-1,1,2,-2};
char input_char,input_copy1;
int  input_int,input_copy2;
int board[8][8];
void Knight(int x,int y,int depth);
void main()
{
	
	fstream infile,outfile;
	infile.open("d:\\input.dat",ios::in);
	outfile.open("d:\\output.dat",ios::out);
    
	while(infile>>input_char)
	{
        infile>>input_int;
		input_copy1=input_char;
		input_copy2=input_int;
		startx=input_char-'a';
		starty=input_int-1;
		infile>>input_char>>input_int;
		endx=input_char-'a';
		endy=input_int-1;
		for(int i=0;i<8;i++)
		{
		    for(int j=0;j<8;j++)
			{board[i][j]=10000000;}
		}
		board[startx][starty]=0;
		Knight(startx,starty,1);
		outfile<<"to get from "<<input_char<<input_int<<" to "<<input_char<<input_int
			<<" takes "<<board[endx][endy]<<" Knight moves!"<<endl;
		
	}
}
void Knight(int x,int y,int depth)
{
	
	int new_x,new_y;
	for(int i=0;i<8;i++)
	{
		new_x=x+off_x[i];
		new_y=y+off_y[i];
		if( new_x >=0 && new_x<8 &&new_y>=0 &&new_y<8)
		{
			if(board[new_x][new_y]>depth)
			{
				board[new_x][new_y]=depth;
				Knight(new_x,new_y,depth+1);
			}
		}
		
	}
}

⌨️ 快捷键说明

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