zoukankan      html  css  js  c++  java
  • poj2488(A Knight's Journey)

    题目地址:A Knight's Journey

    题目大意:

        骑士按照日字形走,给你p*q的棋盘,问你骑士能否走遍棋盘的所有位置,输出骑士走的路线序列p(1.2....)q(A.B...)

    按照字典序输出,如果不能输出 'impossible' .

    解题思路:

       搜索。因为是遍历全图所有点,所以必然经过A1. 又因为按字典序,既然A1可以经过,所以必然可以从A1开始。

       注意: 1.按照字典序输出意思为(先安A.B.C...)排序输出。

                const int dirx[]={-1,1,-2,2,-2,2,-1,1};

                const int diry[]={-2,-2,-1,-1,1,1,2,2};

                2.每组数据后有换行。

    代码:

      1 #include <algorithm>
      2 #include <iostream>
      3 #include <sstream>
      4 #include <cstdlib>
      5 #include <cstring>
      6 #include <cstdio>
      7 #include <string>
      8 #include <bitset>
      9 #include <vector>
     10 #include <queue>
     11 #include <stack>
     12 #include <cmath>
     13 #include <list>
     14 //#include <map>
     15 #include <set>
     16 using namespace std;
     17 /***************************************/
     18 #define ll long long
     19 #define int64 __int64
     20 #define PI 3.1415927
     21 /***************************************/
     22 const int INF = 0x7f7f7f7f;
     23 const double eps = 1e-8;
     24 const double PIE=acos(-1.0);
     25 const int d1x[]= {0,-1,0,1};
     26 const int d1y[]= {-1,0,1,0};
     27 const int d2x[]= {0,-1,0,1};
     28 const int d2y[]= {1,0,-1,0};
     29 const int fx[]= {-1,-1,-1,0,0,1,1,1};
     30 const int fy[]= {-1,0,1,-1,1,-1,0,1};
     31 /*vector <int>map[N];map[a].push_back(b);int len=map[v].size();*/
     32 /***************************************/
     33 void openfile()
     34 {
     35     freopen("data.in","rb",stdin);
     36     freopen("data.out","wb",stdout);
     37 }
     38 priority_queue<int> qi1;
     39 priority_queue<int, vector<int>, greater<int> >qi2;
     40 /**********************华丽丽的分割线,以上为模板部分*****************/
     41 const int dirx[]={-1,1,-2,2,-2,2,-1,1};
     42 const int diry[]={-2,-2,-1,-1,1,1,2,2};
     43 int vis[30][30];
     44 int p,q;
     45 int ce;
     46 struct Node
     47 {
     48     int x;
     49     char y;
     50 } node[30];
     51 int DFS(int x,int y,int cnt)
     52 {
     53     int xx,yy;
     54     if (cnt-1==p*q)
     55     {
     56         ce=1;
     57         return 0;
     58     }
     59     for(int i=0; i<8; i++)
     60     {
     61          xx=x+dirx[i];
     62          yy=y+diry[i];
     63         if (xx>0&&xx<=p&&yy>0&&yy<=q&&!vis[xx][yy])
     64         {
     65             // cnt++;
     66             vis[xx][yy]=1;
     67             node[cnt].x=xx;
     68             node[cnt].y=yy;
     69             DFS(xx,yy,cnt+1);
     70             vis[xx][yy]=0;
     71         }
     72         if (ce)
     73             return 0;
     74     }
     75 }
     76 int main()
     77 {
     78     int cas;
     79     int cntt=1;
     80     scanf("%d",&cas);
     81     while(cas--)
     82     {
     83         scanf("%d%d",&p,&q);
     84         memset(vis,0,sizeof(vis));
     85         memset(node,0,sizeof(node));
     86         int cnt=1;
     87         ce=0;
     88         node[cnt].x=1;
     89         node[cnt].y=1;
     90         vis[1][1]=1;
     91         DFS(1,1,cnt+1);
     92         printf("Scenario #%d:
    ",cntt++);
     93         if (ce)
     94         {
     95             for(int i=1; i<=p*q; i++)
     96             {
     97                 printf("%c%d",node[i].y+'A'-1,node[i].x);
     98             }
     99             printf("
    ");
    100         }
    101         else
    102             printf("impossible
    ");
    103         if (cas)
    104             printf("
    ");
    105     }
    106     return 0;
    107 }
    View Code
    屌丝终有逆袭日,*******。
  • 相关阅读:
    PHP加速器
    sublime text3-代码片段配置
    CI源码引用使用--php引用demo,静态变量和引用关系
    配置nginx1.7.8支持pathinfo模式
    php多线程即时通讯
    linux上配置subversion服务器端安装配置并使用svn,windows本地检出,设置同步更新服务器的钩子
    time返回当前的 Unix 时间戳而$_SERVER["REQUEST_TIME"]得到请求开始时的时间戳
    yum命令学习
    linux自定义开机启动服务
    闲与忙
  • 原文地址:https://www.cnblogs.com/ZhaoPengkinghold/p/3888210.html
Copyright © 2011-2022 走看看