| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3888 人关注过本帖, 1 人收藏
标题:马的遍历问题
只看楼主 加入收藏
半神传说
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-9-18
收藏(1)
 问题点数:0 回复次数:9 
马的遍历问题
最近接触到马的遍历问题,感觉很难,希望能得到分别用贪婪和回朔法编写的代码,谢谢了
搜索更多相关主题的帖子: 遍历 
2008-09-18 20:29
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
复制给你了
#include<stdio.h>
#define N 8
struct nx
{
   int m;
   int n;   
};
int array[9][9];
int count;
void format(void)
{
   int line;
   int posi;
   for(line=1;line<=8;line++)
   {
      for(posi=1;posi<=8;posi++)
      {
         array[line][posi]=0;
      }
   }
}

struct nx jump_horse(int direct,int x,int y)
{
   struct nx next;
   switch(direct)
   {
      case 1: next.m=x+2;next.n=y+1;break;
      case 2: next.m=x+2;next.n=y-1;break;
      case 3: next.m=x+1;next.n=y-2;break;
      case 4: next.m=x-1;next.n=y-2;break;
      case 5: next.m=x-2;next.n=y-1;break;
      case 6: next.m=x-2;next.n=y+1;break;
      case 7: next.m=x-1;next.n=y+2;break;
      case 0: next.m=x+1;next.n=y+2;break;
   }
   return next;
}

int can_put_here(int deepth,int m,int n)
{
   if(n>N||m>N||n<1||m<1||array[m][n]!=0)
     return 0;
   else
      return 1;
}

void list_result(void)
{
   int line;
   int posi;
   for(line=1;line<=N;line++)
   {
      for(posi=1;posi<=N;posi++)
      {
         printf("%3d",array[line][posi]);
      }
       printf("\n");
   }
   printf("\n");
}

void horse_track(int deepth,int x,int y)
{
   int direct1;
   struct nx next;
   if(deepth>N*N)
   {
      list_result();
      array[x][y]=0;
      count++;/*看有多少種走法*/
   }
   else
   {
      for(direct1=0;direct1<=7;direct1++)
      {
        next=jump_horse(direct1,x,y);
        if(can_put_here(deepth,next.m,next.n))
        {
           array[next.m][next.n]=deepth;
           horse_track(deepth+1,next.m,next.n);
        }
     }
     if(direct1==8)
       array[x][y]=0;
   }
}

main()
{
   int startx;
   int starty;
   format();
   printf("Please input the start position(x,y):");
   scanf("%d%d",&startx,&starty);
   array[startx][starty]=1;
   count=0;
   horse_track(2,startx,starty);
   printf("%d",count);
}

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-09-18 20:31
半神传说
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-9-18
收藏
得分:0 
谢谢了哦,好快啊
2008-09-18 20:41
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
马的遍历可以贪婪????

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-18 21:17
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]StarWing83[/un] 在 2008-9-18 21:17 的发言:[/bo]

马的遍历可以贪婪????


马的遍历(周游)就是贪心嘛...

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-09-19 12:42
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
当然,也可以去找一个环...然后直接调整次序输出答案...
不过贪心算法已经足够快了

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-09-19 12:43
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
马的遍历?我好像没看过……是求什么的?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-19 13:09
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 7# StarWing83 的帖子
是参照象棋中马的行走规距,象棋中,“马走日”。
http://zhidao.baidu.com/question/5203036.html
http://topic.
2008-09-20 01:18
开心每一秒
该用户已被删除
收藏
得分:0 
回复 2楼 liyanhong
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-06 08:25
qq274366510
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-11-27
收藏
得分:0 
给出坐标(1,2)能不能成功遍历一次?
2013-11-27 19:01
快速回复:马的遍历问题
数据加载中...
 
   



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

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