关于程序算法设计这一章,我非常怀恋大学时候参加ACM程序设计大赛培训班的美好时光。空余之闲,回顾和温习一下程序算法设计的相关知识,今天以一个题目开篇:
搜索算法包括广度搜索和深度搜索,此题的解法当然有多种,附上我Accept的代码,分享给大家一起讨论:
#include<iostream.h>
void horse_wolk(int& c,int num[8][2],int i,int j,int tmpi,int tmpj,bool sign[4][5])
{
int k,ii,jj;
for(k=0;k<8;k++)
{
ii=tmpi+num[k][0];
jj=tmpj+num[k][1];
if((ii>=1)&&(ii<=4)&&(jj>=1)&&(jj<=5))
{
if(sign[ii-1][jj-1])
;
else if((ii==i)&&(jj==j))
{
c=c+1;
continue;
}
else
{
sign[ii-1][jj-1]=true;
horse_wolk(c,num,i,j,ii,jj,sign);
sign[ii-1][jj-1]=false;
}
}
}
}
int main()
{
int num[8][2]={2,1,1,2,-1,2,-2,1,-2,-1,-1,-2,1,-2,2,-1};
bool sign[4][5];
int n,i,j,count;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
sign[i][j]=false;
int** m;
cin>>n;
m=new int*[n];
for(i=0;i<n;i++)
{
count=0;
m[i]=new int[2];
cin>>m[i][0]>>m[i][1];
if((m[i][0]<1)||(m[i][0]>4)||(m[i][1]<1)||(m[i][1]>5))
;
else
horse_wolk(count,num,m[i][0],m[i][1],m[i][0],m[i][1],sign);
if(count!=0)
cout<<count<<endl;
else
cout<<"ERROR"<<endl;
}
return 0;
}