毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

C++骑士巡游问题 第2页

更新时间:2011-5-14:  来源:毕业论文
#include <iostream.h>
#include <stdio.h>
int map[9][9];//用来标记的二文数组
int n=5;//实际计算时的棋盘大小,超过5时运算时间过长,小于5时无解

class Knight{
private:
     int dirx[8];//八个方向可以走,用两个数组分别记录每个方向上x,y的坐标位移
     int diry[8];
public:
     Knight()
  {

            dirx[0]=1;diry[0]=2;
            dirx[1]=2;diry[1]=1;
            dirx[2]=1;diry[2]=-2;
            dirx[3]=2;diry[3]=-1;
            dirx[4]=-1;diry[4]=2;
            dirx[5]=-2;diry[5]=1;
            dirx[6]=-1;diry[6]=-2;
            dirx[7]=-2;diry[7]=-1;
}
private:
      bool judge(int y,int x){
      if(x>0 && x<=n && y>0 && y<=n && map[y][x]==0)
          return true;
      else
          return false;
}
public:
      void set(int y,int x,int t){
      if(t==n*n)
   {
             map[y][x]=t;
             cout<<"one possible answer:"<<endl;
             for(int i=1;i<=n;i++){
             for(int j=1;j<=n;j++){
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com/    }
else
{
      if(map[y][x]==0){
      map[y][x]=t;
      int nextt=t+1;
      for(int i=0;i<8;i++)
   {
        if(judge(y+diry[i],x+dirx[i]))
        set(y+diry[i],x+dirx[i],nextt);
   }
   map[y][x]=0;
   }
}
   }
};

void main()
{
    Knight *horse=new Knight();//骑士也要走马步
    for(int i=1;i<=8;i++)
    for(int j=1;j<=8;j++)
    map[i][j]=0;
    for(i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    horse->set(i,j,1);
    delete horse;

上一页  [1] [2] 

C++骑士巡游问题 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。