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

📄 knight.cpp

📁 这是一个马跳的程序
💻 CPP
字号:
#include<iostream.h> 
#include<fstream.h>                  
#include<conio.h>
ifstream input;
ofstream output;
int height,vertical,dian=0;
int Xzuobiao[]={2,1,1,2,  -1,-2,-2,-1};             
int Yzuobiao[]={1,2,-2,-1, 2, 1,-1,-2};           
int **qipange=NULL; 
struct path *path;
void chushihua()            
{
    for(int i=0;i<height;i++)
        for(int j=0;j<vertical;j++)
            qipange[i][j]=0;
}

bool isok(int m,int n)      
{
    if( (m>=0)&&(m<height)&&(n>=0)&&(n<vertical)&&(qipange[m][n]==0) ) return 1;  
    else return 0;
}

int outnumber(int m,int n)     
{
    int biaozhi=0;                
    for(int i=0;i<8;i++)        
        if(isok( (m+Xzuobiao[i]),(n+Yzuobiao[i]) )) biaozhi++;   
    return biaozhi;       
}

void display()                  
{
    if(dian==0)
	{
 		for(int i=0;i<height;i++)
		{
           for(int j=0;j<vertical;j++)
		   {
            output<<qipange[i][j]<<"  ";
		   }
	       output<<endl;
		}
	}
	else
		{
 		  for(int j=0;j<vertical;j++)
		  {
            for(int i=0;i<height;i++)
			{
            output<<qipange[i][j]<<"  ";
			}
	       output<<endl;
		  }
	}

}

int mixmin(int m,int n)     
{                           
    int zuixiaodir=0,mixtotal=9,a=0;   
	for(int i=0;i<8;i++)
	{
        if(isok ((m+Xzuobiao[i]),(n+Yzuobiao[i])))
		{     
			
            if( ((m+Xzuobiao[i]==1)&&(n+Yzuobiao[i]==2))||(  (m+Xzuobiao[i]==3)&&(n+Yzuobiao[i]==3)  )  )
		       continue;
            a=outnumber((m+Xzuobiao[i]),(n+Yzuobiao[i]));   
            if( a &&(a<mixtotal))
			{                
                mixtotal=a;              
                zuixiaodir=i;                
            }
        }
    }
    if(zuixiaodir==0) {                    
        for(i=0;i<8;i++)
            if(isok ( (m+Xzuobiao[i]),(n+Yzuobiao[i]) )) return i;
    }
	
    return zuixiaodir;        
}

void main()
{
	int x=0,y=0,i=0; 
   int step=1;
	input.open("input.txt");
    output.open("output.txt");
	if (!input)
	{
		cout<<"fail in opening input.txt";
		return;
	}
	if (!output)
	{
		cout<<"fail in opening output.txt";
		return;
	}
	input>>height>>vertical;
	if(height<vertical)
	{
		int temp;
		temp=height;
		height=vertical;
		vertical=temp;
		dian=1;
	}
    qipange=new  int*[height]; 
    for(int ii = 0; ii<height; ii++) 
    qipange[ii] = new  int[vertical]; 
    output<<'('<<x<<','<<y<<')'<<"  ";
    chushihua();
    qipange[x][y]=step;                 
    for(step=2;step<=height*vertical;step++)
	   {    
		   i=mixmin(x,y);       
           x+=Xzuobiao[i];       
           y+=Yzuobiao[i];      
            qipange[x][y]=step;
		      
		     if(dian==0)
			 {
				 output<<'('<<x<<','<<y<<')'<<"  ";
				 if((step%vertical)==0)
			      output<<endl;
			 }
			 else
			 {
				 	 output<<'('<<y<<','<<x<<')'<<"  ";
				 if((step%height)==0)
			      output<<endl;
			 }
  
       }
       output<<endl;
       display();           
      for(int jj=0;jj<vertical;jj++)  
	      delete []qipange[jj];  
      delete []qipange;
      input.close();
	  output.close();

}










⌨️ 快捷键说明

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