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;
    }
  • 相关阅读:
    CodeFirst进行数据迁移之添加字段
    .NET程序优化
    DataRead 和DataSet区别
    WCF、WebAPI、WCFREST、WebService之间的区别
    centos6.7下安装配置vnc
    Centos 6.5 优化 一些基础优化和安全设置
    Elasticsearch 检索
    ElasticSearch 5.0.1 java API操作
    Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1安装记录
    Spring的注解@Qualifier小结
  • 原文地址:https://www.cnblogs.com/-citywall123/p/13453606.html
Copyright © 2011-2022 走看看