poj 2488 dfs(骑士环游世界)

来源:互联网 发布:ios 网络图片高斯模糊 编辑:程序博客网 时间:2024/04/28 17:53

这是我在新浪写的第一篇博文了吧,嘿嘿,把它也贴过来。一个经典的dfs。

#include<iostream>using namespace std;#define max 26int dir[8][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};//定义八个方向 因为要按字典树输出 //棋盘应该是按照下面形式分布的(因为这样符合数组的情况)//所以yy[max]是存的字母  那就是“尽量优先往左上跳” (纵坐标尽量小的情况小横坐标尽量小)//则方向数组这样写 int map[max][max],xx[max],yy[max],p,q,step,flag;//路径,X坐标,Y坐标,长,宽,步数,成功标志void dfs(int i,int j){     //printf("%d %d\n",i,j);     int x,y;     if(flag) return;     xx[step]=i;     yy[step]=j;     step++;//走的步数      map[i][j]=1;     if((step-1)==p*q)//如果遍历的棋盘,则返回 并且成功标记=1      {flag=1;return;}     for(int k=0;k<8;k++)     {             x=i+dir[k][0];             y=j+dir[k][1];             //printf("%d %d");             //system("pause");             //如果不越界 则按条件继续搜索              if(!map[x][y]&&x>=1&&x<=p&&y>=1&&y<=q)             {                                                     dfs(x,y);                                                     step--;             }     }     map[i][j]=0;}int main(){    int t,h=0;    cin>>t;    while(t--)    {             cin>>p>>q;             h++;             flag=0;             step=1;             memset(map,0,sizeof(map));              dfs(1,1);             if(flag)             {                     printf("Scenario #%d:\n",h);                     for(int i=1;i<=p*q;i++)                     {                        printf("%c%d",yy[i]+64,xx[i]);                         //输出每一步跳过的位置                                                }                     cout<<endl<<endl;              }             else             {                 printf("Scenario #%d:\n",h);                 printf("impossible\n\n");             }     }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 洗脚让洗脚妹摸射精了怎么办 在新疆塔城干活不给工资怎么办 挨打了屁股肿的又大又硬怎么办 李贞将军有关电影小腿肌腱疼怎么办 朋友老婆老是背地里说我坏话怎么办 当你听到别人在背后说你时怎么办 分手了和前任是同事需要见面怎么办 和附近的人聊天他约你见面怎么办 微信约妹子发完红包拉黑了怎么办 户口本被前妻扣着不能结婚怎么办 部队当兵户口没注销退伍回去怎么办 没打疫苗的狗狗咬了我的嘴巴怎么办 新车被撞了还没上牌怎么办? 签了合同上两天班想辞职怎么办 刚到公司上班两天想辞职怎么办 签入职合同一天后就不想干了怎么办 入职材料交了第二天就想离职怎么办 宝宝40周多了还不想出来怎么办 工厂上班不到三个月不给辞工怎么办 单位辞职后不上班了保险怎么办 药流6个小时没流下来怎么办 小孩有口臭怎么办这几天不想吃饭 七个月宝宝口臭不想吃饭怎么办啊 老公工作累想要辞职不上班怎么办 药物流产后第6天咋下坠的怎么办 药流第一天胎囊没有掉下来怎么办 药流还有一点没流干净怎么办 3个月的宝宝被电了一下怎么办 宝宝吃奶粉过敏下巴红有疙瘩怎么办 小孩牙齿没掉又长出新牙怎么办 8个月婴儿地包天怎么办 欠别人很多钱 要告我怎么办 ps意外的遇到文件尾损坏了怎么办 长期作息不规律引起的头疼怎么办 退休年龄到了社保没满15年怎么办 要退休了单位把我工资表丢了怎么办 非工伤单位不支付病假工资怎么办 十个月宝宝咳嗽有痰怎么办崔玉涛 怀孕五个月胎儿脐带绕颈怎么办 6个月宝宝白天睡眠不好怎么办 22个月宝宝身高才79公分怎么办