zoukankan      html  css  js  c++  java
  • luogu_2324 骑士精神

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #define limit 15
    using namespace std;
    int T,ans=20,flag;
    int xx[9]={0,-2,-2,-1,-1,1,1,2,2};
    int yy[9]={0,-1,1,-2,2,2,-2,1,-1};
    int s[10][7],get[10][10];
    int target[10][10];
    char si;
    void get_t(){
        target[1][1]=1;target[1][2]=1;target[1][3]=1;target[1][4]=1;target[1][5]=1;
        target[2][1]=0;target[2][2]=1;target[2][3]=1;target[2][4]=1;target[2][5]=1;
        target[3][1]=0;target[3][2]=0;target[3][3]=2;target[3][4]=1;target[3][5]=1;
        target[4][1]=0;target[4][2]=0;target[4][3]=0;target[4][4]=0;target[4][5]=1;
        target[5][1]=0;target[5][2]=0;target[5][3]=0;target[5][4]=0;target[5][5]=0;
    }
    int Judge(){
        int ret=0;
        for(int i=1;i<=5;i++)
          for(int j=1;j<=5;j++){
              if(s[i][j]!=target[i][j])ret++;
        }
        return ret;
    }
    void DFS(int now,int x,int y,int sum){
        if(flag)return;
        int c=Judge();
        if(now==sum && c==0)flag=1,ans=sum;
        if(now-1+c>sum)return;
        for(int i=1;i<=8;i++){
            int nx=x+xx[i];
            int ny=y+yy[i];
            if(nx>0 && nx<=5 && ny>0 && ny<=5){
                swap(s[x][y],s[nx][ny]);
                DFS(now+1,nx,ny,sum);
                swap(s[x][y],s[nx][ny]);
            }
        }
    }
    int main(){
        scanf("%d",&T);
        get_t();
        while(T--){
            int x,y;
            for(int i=1;i<=5;i++)
              for(int j=1;j<=5;j++){
                cin>>si;
                if(si=='*'){x=i;y=j;get[i][j]=2;}    
                else get[i][j]=si-'0';
            }
            for(int k=0;k<=limit;k++){
                flag=0; ans=20;
                for(int i=1;i<=5;i++)
                for(int j=1;j<=5;j++)s[i][j]=get[i][j];
                DFS(0,x,y,k);
                if(ans==k)break;
            }
            if(ans<=15)printf("%d ",ans);
            else printf("-1 ");
        }
        return 0;
    }
  • 相关阅读:
    TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect【转】
    PHPnumber_format()函数的使用
    蓝桥杯-PREV28-地宫取宝
    HihoCode-1053-居民迁移
    HihoCode-1323-回文字符串
    蓝桥杯-PREV3-带分数
    HDU-6312-Game
    HDU-6438-Buy and Resell
    CF-1117C-Magic Ship
    HDU-2802-F(N)
  • 原文地址:https://www.cnblogs.com/codetogether/p/7422543.html
Copyright © 2011-2022 走看看