zoukankan      html  css  js  c++  java
  • DFS+输出路线--poj2488--A Knight's Journey

    地址

    上一次做八数码的时候,自己把不输出路线的版本写了出来,对于记录路线的,也没去想怎么写,今天做到一个记录路线的dfs,正好写出来

    这个代码中记录路线的办法非常清晰易懂,看了就会:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    
    struct aa{
        int x;
        int y;
    };
    
    bool markk;
    
    aa qq[30];
    
    int h,l,sum;
    int v[30][30];
    int movee[][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};
    
    void dfs(int hh,int ll,int num){
        qq[num].x=hh;
        qq[num].y=ll;
        
        if(num==sum){
            markk=true;
            return;
        }
        
        int tx,ty;
        
        for(int i=0;i<8;i++){
            ty=ll+movee[i][1];
            tx=hh+movee[i][0];
            
            if(v[tx][ty]||tx<=0||tx>h||ty<=0||ty>l||markk) continue;
            v[tx][ty]=1;
            dfs(tx,ty,num+1);
            v[tx][ty]=0;
        }
        return;
    }
    
    
    
    int main(){
    
         int n;
         cin>>n;
    
         for(int i=1;i<=n;i++){
             markk=false;
             memset(v,0,sizeof(v));
             cin>>h>>l;
             sum=h*l;
             v[1][1]=1;
             dfs(1,1,1);
            printf("Scenario #%d:
    ",i);
             if(markk){        
    
             for(int i=1;i<=l*h;i++){
                 printf("%c",qq[i].y+64);cout<<qq[i].x;
             }
             cout<<endl;
             }
             else cout<<"impossible
    ";
             cout<<endl;
        }
         return 0;
    }
    柳暗花明又一村
  • 相关阅读:
    模型绑定功能
    接口返回的内容
    跨平台的ASP.NET Core简介
    NLog如何打印日志(.Net5)
    注意力创造价值;
    Restful接口的介绍
    电脑设置双屏显示(windows)
    Linq多集合连接
    调试时才执行的代码
    mvc4 路由匹配测试
  • 原文地址:https://www.cnblogs.com/ucandoit/p/8664483.html
Copyright © 2011-2022 走看看