poj-2488-dfs

来源:互联网 发布:linux 开机启动sh文件 编辑:程序博客网 时间:2024/05/29 18:10

题目大意:

给一个棋盘的长和宽,让你选择一条路径,可以让“马”走完整个棋盘。

做法:

遍历棋盘的每一个点作为起点。

从起点开始,dfs每条可能的路径。

由于当存在多条路径的时候,输出字典序小的那条路径,所以,在dfs的时候,一定要先遍历字典序小的路径。

当遍历到一条可行路径的时候输出这条路径。

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int map[100][100];int num[100];int st,end;int a,b;int leap;int xx[8]={-1,1,-2,2,-2,2,-1,1};int yy[8]={-2,-2,-1,-1,1,1,2,2};int pan(){    int i,j;    for(i=1;i<=a;i++)    {        for(j=1;j<=b;j++)        {            if(map[i][j]==0)return 0;        }    }    return 1;}void print(int x){    int i;    int aa,bb;    for(i=1;i<x;i++)    {        aa=num[i]%b;        if(aa==0)aa=b;        bb=(num[i]-aa)/b+1;   //     printf("%d %d\n",b,a);        printf("%c%c",aa+'A'-1,bb+'0');    }    printf("\n");}void search(int x,int y,int z){    if(x<1||y<1||x>a||y>b)    {        if(pan())        {            print(z);            leap=1;            return ;        }        else            return ;    }    if(map[x][y]!=0)return ;    map[x][y]=z;    num[z]=(x-1)*b+y;    int i;    for(i=0;i<8;i++)    {        search(x+xx[i],y+yy[i],z+1);        if(leap==1)return ;    }    map[x][y]=0;}int main(){    int i,j,k,n;    cin>>n;    for(k=0;k<n;k++)    {        memset(map,0,sizeof(map));        cin>>a>>b;        printf("Scenario #%d:\n",k+1);        for(i=1;i<=b;i++)        {            for(j=1;j<=a;j++)            {                leap=0;                memset(num,0,sizeof(num));                memset(map,0,sizeof(map));                search(j,i,1);                if(leap)break;            }            if(j!=a+1)break;        }        if(i==b+1)            printf("impossible\n");        printf("\n");    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫没收到货签收怎么办 收到的快递坏了怎么办 自寄的快递少了怎么办 邮的东西弄坏了怎么办 物流签收后发现货物损坏怎么办 发现客人损坏了酒店物品怎么办 东西坏了签收了怎么办 朋友圈贩卖三无产品你怎么办 付钱给微商没有保障怎么办 电镀锌钢带生锈怎么办 电机机油从空气滤芯里流出怎么办 把塑料皮套吃了怎么办 塑料框眼镜有点小了怎么办 出口纸箱打了钉怎么办 买房子交款单据丢了怎么办 买房子所有单据丢失怎么办 车险单据都丢了怎么办 真空包装的东西里面有空气怎么办 发货物忘记写唛头了怎么办 Word文档撤销按钮删除了怎么办 ai保存时未响应怎么办 ai还没保存卡了怎么办 ai卡住了没保存怎么办 屁股沟有硬块红肿怎么办 卧室床选太大了怎么办 画板的笔尖掉了怎么办 宜家水壶盖子有水怎么办 背滤鱼缸除油膜怎么办 书多了没地方放怎么办 学生在教室内丢手机怎么办 新车尾箱坏了怎么办 放书的箱子烂了怎么办 车钥匙锁后备箱里怎么办 布的收纳箱有味怎么办 车漆清漆层掉了怎么办 副驾驶储物箱卡子断了怎么办 玛莎拉蒂车门打不开怎么办 新买的水杯漏水怎么办 泰迪小狗掉毛怎么办 手机jlc调用接口状态异常怎么办 进门和厕所对着怎么办