| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 789 人关注过本帖
标题:课程设计,大侠帮忙改下啊!!!
只看楼主 加入收藏
shuihan
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-9-22
收藏
 问题点数:0 回复次数:0 
课程设计,大侠帮忙改下啊!!!
问题描述:
在9*11的中国象棋棋盘的任意位置放只马,该马能够无重复的走完棋盘的每一个位置,并输出路线
。或者那位大侠给我一个算法。我的错的太离谱了。
#define N 9
#include<math.h>
#include<stdio.h>
int oldmap[N][N+2];   //递归用的数组,用全局变量节约时间
int yes=0;            //yes是判断是否找到路的标志,1找到,0没找到
int way[200][2],wayn=0;//way数组是显示路线用的,wayn是统计走了几个格子
void waycopy(int (*x)[N] ,int (*y)[N+2]);
//为了8个方向的递归,把原路线拷贝给新数组
int Findway(int (*x)[N],int i,int j);//自动探索函数

void main()
{
int map[N][N+2];//递归用的数组,用全局变量节约时间
int x,y;
clrscr();
printf("\nplease two number:\n");
scanf("%d,%d",&a,&b);
if(x<1||x>N||y<1||y>N+2)
printf("\nError:out of number\n");
int count=0;


void waycopy(int (*oldmap[N],int (*map)[N])
//拷贝棋盘
{
int i,j;
  for(i=0;i<N;i++)
   for(j=0;j<N+2;j++)
      oldmap[i][j]=map[i][j];
}
//递归找路
int Findway(int (*map)[N],int i,int j)
{
 if(count==99)
  {
   yes=1;
   return;
   }
    map[i][j]=1;//走过的地方变为1
    waycopy(oldmap,map);//拷贝棋盘
    if(!yes&&x>=1&&x<=8&&&y>=1&&y<=11)//判断右上方是否可走
    {
     Findway(oldmap,i+2,j+1);
     count++;
     if(yes)
      {
       way[wayn][0]=i;
       way[wayn++][1]=j;
       return;
       }
     }
     waycopy(oldmap,map);
     if(!yes&&x>=1&&x<=9&&y>=1&&y<=10)//判断上右方是否可走
     {
     Findway(oldmap,i+1,y+2);
     count++;
     if(yes)
     {
      way[wayn][0]=i;
      way[wayn++][1]=j;
      return;
      }
     }
     waycopy(oldmap,map);
     if(!yes&&x>=2&&x<=10&&y>=1&&y<=10)//判断上左方是否可走
     Findway(oldmap,i-1,j+2);
     count++;
     if(yes)
     {
     way[wayn][0]=i;
     way[wayn++][1]=j;
     return;
     }
    }
    waycopy(oldmap,map);
    if(!yes&&x>=3&&x<=10&&y>=1&&y<=11);//判断左上方是否可走
    Findway(oldmap,i-2,j+1);
    count++;
    if(yes)
    {
    way[wayn][0]=i;
    way[wayn++][1]=j;
    return;
    }
   }
   waycopy(oldmap,map);
   if(!yes&&x>=3&&x<=10&&y>=2&&y<=12);//判断左下方是否可走
   Findway(oldmap,i-2,y-1);
   count++;
   if(yes)
   {
   way[wayn][0]=i;
   way[way++][1]=j;
   return;
   }
  }
  waycopy(oldmap,map);
  if(!yes&&x>=2&&x<=10&&y>=3&&y<=12);//判断下左方是否可走
  Findway(oldmap,i-1,j-2);
  count++;
  if(yes)
  {
   way[wayn][0]=i;
   way[wayn++][1]=j;
   return;
   }
  }
  waycopy(oldmap,map);
  if(!yes&&x>=1&&x<=9&&y>=3&&y<=12);//判断下右方是否可走
  Findway(oldmap,i+1,j-2);
  count++;
  if(yes)
  {
   way[wayn][0]=i;
   way[wayn++][1];
   return;
   }
  }
  waycopy(oldmap,map);
  if(!yes&&x>=1&&x<=8&&y>=2&&y<=12);//判断右下方是否可走
  Findway(oldmap,i+2,j-1);
  count++;
  if(yes)
  {
   way[wayn][0]=i;
   way[wayn++][1]=j;
   return;
   }
  }
  
  getch();
 }
搜索更多相关主题的帖子: 课程 大侠 设计 
2007-12-26 17:58
快速回复:课程设计,大侠帮忙改下啊!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043444 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved