zoukankan      html  css  js  c++  java
  • sicily 1152. 简单的马周游问题

    因为矩阵很小,简单的深搜。。可是。。
    有一点不明白,当我的chage数组为change[]={-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1}的时候就会TLE,深搜的方向不同时间差别这么大吗?
    这个时间复杂度怎么分析? 诚心请教各位大牛为小弟指点迷津。。。
     1 #include<iostream>
     2 #include<memory.h>
     3 using namespace std;
     4 
     5 bool visited[5][6];
     6 int road[30];
     7 int change[]={-1,-2,-2,-1,-2,1,-1,2,1,2,2,1,2,-1,1,-2};    
     8 
     9 void dfs(int row,int col,int now)
    10 {
    11     visited[row][col]=1;
    12     road[now]=6*row+col+1;
    13     if(now==29) return ;
    14     for(int i=0;i<16;i+=2)
    15     {
    16         int now_row=row+change[i];
    17         int now_col=col+change[i+1];
    18         if(now_row>=0&&now_row<5&&now_col>=0&&now_col<6&&visited[now_row][now_col]==0)
    19         dfs(now_row,now_col,now+1);
    20     }
    21     if(road[now+1]==0)      //待上面那个for循环做完后,仍找不到下一步,说明这步走得不对,要清除,回溯另找路径 
    22     {
    23         visited[row][col]=0;
    24         road[now]=0;
    25     }
    26 }
    27 int main()
    28 {
    29     int N;
    30     while(cin>>N&&N!=-1)
    31     {
    32         int row,col;
    33         int now=0;
    34         row=N/6;
    35         col=N%6-1;
    36         memset(road,0,sizeof(road));
    37         memset(visited,0,sizeof(visited));
    38 
    39         dfs(row,col,now);
    40         for(int i=0;i<30;i++)
    41         {
    42             cout<<road[i];
    43             if(i!=29)   cout<<' ';
    44         }
    45         cout<<endl;
    46     }
    47     return 0;
    48 }    
  • 相关阅读:
    Ubuntu 18.04安装gcc、g++ 4.8
    Java 接口返回值集合防止空指针
    Linux CentOS7.9环境下搭建Java Web 环境
    Springboot集成UReport2
    linux 环境中 单独执行 python 脚本
    sql 注入的问题
    检验上传文件的大小
    Gunicorn使用讲解
    CentOS下安装部署对象存储服务MinIO
    阿里云CentOS7安装MySQL
  • 原文地址:https://www.cnblogs.com/cfhome/p/2693111.html
Copyright © 2011-2022 走看看