zoukankan      html  css  js  c++  java
  • POJ 2488 A Knight's Journey

    DFS,要求输出字典序最小的,注意扩展方向。

    # include <cstdio>
    # include <cstring>
    
    # define N 26 + 5
    
    const int dx[] = {-1, 1,-2, 2,-2, 2,-1, 1};
    const int dy[] = {-2,-2,-1,-1, 1, 1, 2, 2};
    
    int p, q, cnt;
    bool finished;
    char solu[N][2];
    char vis[N][N];
    
    void dfs(int x, int y)
    {
        solu[cnt][0] = x, solu[cnt][1] = y;
        if (cnt == p*q)
        {
            finished = true;
            return ;
        }
        else
        {
            for (int i = 0; i < 8; ++i)
            {
                int nx = x + dx[i];
                int ny = y + dy[i];
                if (1<=nx&&nx<=p && 1<=ny&&ny<=q && !vis[nx][ny])
                {
                    vis[nx][ny] = 1, ++cnt;
                    dfs(nx, ny);
                    if (finished) return;
                    vis[nx][ny] = 0, --cnt;
                }
            }
        }
    
    }
    
    void solve(void)
    {
        finished = false;
    
        for (int i = 1; i <= p; ++i)
                    memset(vis[i]+1, 0, sizeof(int)*q);
    
        vis[1][1] = 1;
        cnt = 1;
        dfs(1, 1);
        if (finished)
        {
            printf("A1");
            for (int i = 2; i <= p*q; ++i)
                printf("%c%c", solu[i][1]-1+'A', solu[i][0]-1+'1');
            putchar('\n');
        }
        else
            puts("impossible");
    }
    
    int main()
    {
        int T;
    
    //    freopen("PKU2488.in", "r", stdin);
    
        scanf("%d", &T);
        for (int i = 1; i <= T; ++i)
        {
            if (i > 1) putchar('\n');
            printf("Scenario #%d:\n", i);
            scanf("%d%d", &p, &q);
            solve();
        }
    
        return 0;
    }
  • 相关阅读:
    UG二次开发-CAM-获取修改路径参数
    多线程01
    MFC的对话框使用Scintilla
    CATIA的后处理
    win32窗体中使用Scintilla窗体
    string的reserve和resize
    前端宝典
    MarkDown学习
    JAVA中构造方法总结
    IDEA中maven和tomcat的配置
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2604128.html
Copyright © 2011-2022 走看看