zoukankan      html  css  js  c++  java
  • 马走 “日”

    给你一个8*8的棋盘,从一个起点开始,按日字形走(如果行移动两格,列移动1格,如果列移动两格,行移动1格),走满整个棋盘,每个点只能走一遍,输出一个可行路径

    一、dfs输出所有路径

      一开始以为如果能走满整个棋盘,那么从任意起点开始搜索都能搜出答案,结果是错的,只能从一个特定的入口开始才能走完整个期盘

      然后因为没有确定起点和终点,要走完整个棋盘,很慢很慢,即使是6x6的棋盘,虽然能走满整个棋盘,但是也要很久

      

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<list>
    #define ll long long
    using namespace std;
    
    int a[8][8];
    int dir[8][2] = { {2,1},{-2,-1},{-2,1},{2,-1},{1,2},{1,-2},{-1,2},{-1,-2} };
    struct node {
        int x;
        int y;
    }p[10000];
    bool flag = false;
    int ans = 0;
    void dfs(int x, int y, int cnt) {
        if (cnt >= 36)
        {
            cout << "------------------------------" << endl;
            for (int i = 0; i < 36; i++)
            {
                cout << p[i].x << " " << p[i].y << endl;
            }
            ans++;
            flag = true;
            return;
        }
        for (int i = 0; i < 8; i++) {
            int dx = x + dir[i][0];
            int dy = y + dir[i][1];
            if (a[dx][dy] == 0 && dx >= 0 && dx < 6 && dy >= 0 && dy < 6) {
                a[dx][dy] = 1;
                p[cnt].x = dx;
                p[cnt].y = dy;
                dfs(dx, dy, cnt + 1);
                a[dx][dy] = 0;
            }
        }
    
    }
    int main() {
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 6; j++)
            {
                memset(a, 0, sizeof(a));
                a[i][j] = 1;
                p[0].x = i;
                p[0].y = j;
                dfs(i, j, 1);
                if (flag)
                    break;
            }
            if (flag)
                break;
        }
        /*bool flag=dfs(0, 0, 1);*/
        cout << flag << "   ans=" << ans << endl;
        return 0;
    }
  • 相关阅读:
    互联网协议入门
    【HTTP】图解HTTPS
    《计算机本科生理想的学习计划》
    VC++ TinyXML
    TinyXML 在vs2010 VC++使用
    Hadoop2.4.1入门实例:MaxTemperature
    xcode6
    Android利用广播监听设备网络连接(断网)的变化情况
    编程算法
    Google的Guava之IO升华
  • 原文地址:https://www.cnblogs.com/-citywall123/p/13453606.html
Copyright © 2011-2022 走看看