Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1585073
  • 博文数量: 399
  • 博客积分: 8508
  • 博客等级: 中将
  • 技术积分: 5302
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-14 09:28
个人简介

能力强的人善于解决问题,有智慧的人善于绕过问题。 区别很微妙,小心谨慎做后者。

文章分类

全部博文(399)

文章存档

2018年(3)

2017年(1)

2016年(1)

2015年(69)

2013年(14)

2012年(17)

2011年(12)

2010年(189)

2009年(93)

分类: LINUX

2009-12-03 17:01:58

#include
#include
#include
#include
using namespace std;
int x[]={-1,-1,-2,-2,2, 2,1, 1};
int y[]={-2, 2, 1,-1,1,-1,2,-2};
int count,sx,sy;
int chess[5][6];
//回溯法==深搜
void dfs(int p1, int p2)
{
    int pi,pj;
    for(int i=0;i<8;i++)
    {
        pi=p1+x[i];        
        pj=p2+y[i];
        if(chess[pi][pj]==0 && pi>=1 && pj>=1 && pi<=4 && pj<=5)
        {
            chess[pi][pj]=1;
            dfs(pi,pj);
            chess[pi][pj]=0;
        }  //主要是针对起点的第二次访问
        else if(pi==sx && pj==sy)
        {
            count++;
        }
    }
}
main()
{
    memset(chess,0,sizeof(chess));
    count=0;
    scanf("%d,%d",&sx,&sy);
    cout<<"sx="<    cout<    if(sx>=5||sy>=6 ||sx<1 || sy<1)
    {
        printf("Error\n");
        return 0;
    }
    chess[sx][sy]=1;            //一定要对起点初始化,表示第一次访问完成了,
                                //因为本算法就是依靠第二次回到起点来结束的
    dfs(sx,sy);
    cout<}
阅读(799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~