zoukankan      html  css  js  c++  java
  • poj 2488 A Knight's Journey (dfs)

    题意 马走完整个棋盘的路径  (注意 搜索的顺序)
    http://poj.org/problem?id=2488
    #include<stdio.h>
    #include<string.h>
    #define N 100
    int d[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};
    int m[N],f,k,r,c,vis[N][N],read[N][N];
    void dfs(int x,int y,int k)
    {
    
        int i;
        if(f==1)return ;
        read[k][0]=x;
        read[k][1]=y;
       if(k==r*c-1)
       {
           f=1;
    
           for(i=0;i<=k;i++)
           {
               printf("%c%d",'A'+read[i][0],read[i][1]+1);
           }
           printf("\n");
    
           return ;
    
       }
       for(i=0;i<8;i++)
       {
           if(f==1)return ;
           int dx=x+d[i][0];
           int dy=y+d[i][1];
           if(dx>=0&&dx<c&&dy>=0&&dy<r)
           {
    
    
             if(!vis[dx][dy])
             {
    
               vis[dx][dy]=1;
               dfs(dx,dy,k+1);
               vis[dx][dy]=0;
             }
           }
    
       }
    
    }
    int main()
    {
        int t,i,j;
        int l=0;
        scanf("%d",&t);
        while(t--)
        {
            l++;
    
            scanf("%d%d",&r,&c);
           printf("Scenario #%d:\n",l);
            f=0;
    
            for(i=0;i<c;i++)
            {
                for(j=0;j<r;j++)
                 {
                      if(f)break;
                       memset(vis,0,sizeof(vis));
                     vis[i][j]=1;
                     if(!f)
                     dfs(i,j,0);
                 }
                 if(f)break;
            }
    
            if(f==0)printf("impossible\n");
            printf("\n");
    
        }
    }
      
    

      

  • 相关阅读:
    ioremap函数
    kmalloc、kzalloc和vmalloc
    C语言 snprintf函数
    C语言 memset函数
    消息队列
    mount -a
    linux系统查看服务状态和启动停止服务
    Java中创建对象的内存图
    Java中数组在内存中的图解
    socket编程(Java实现)
  • 原文地址:https://www.cnblogs.com/acSzz/p/2423551.html
Copyright © 2011-2022 走看看