zoukankan      html  css  js  c++  java
  • Luogu P3956 棋盘 【NOIP2017 普及组】

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define INF 2147483647
    int m,n,x,y,c;
    int M[110][110];
    int f[110][110];
    int Ans=INF;
    bool vis[110][110];
    int u[]={1,-1,0,0};
    int v[]={0,0,1,-1};
    void dfs(int x,int y,int cost,bool flag){
        //use F[i][j] to memorize the best solution on (i,j)
      if(x<1||x>m||y<1||y>m) return;
      if(cost>=f[x][y])return;
      f[x][y]=cost;
      if(x==m&&y==m){
        Ans=min(cost,Ans);
        return;
      }
      for(int i=0;i<4;i++){
        int nx=x+u[i],ny=y+v[i];
        if(M[nx][ny]){
          if(M[nx][ny]==M[x][y]) dfs(nx,ny,cost,0);
          else dfs(nx,ny,cost+1,0);
        }
        else if(!flag){
          M[nx][ny]=M[x][y];
          dfs(nx,ny,cost+2,1);
          M[nx][ny]=0;
        }
      }
      
      
    }
    int main(){
      cin>>m>>n;
      memset(f,127,sizeof(f));  //memset 是字符串语法不能直接全都赋值int初始化除了zero
      for(int i=1;i<=n;i++){
        cin>>x>>y>>c;
        M[x][y]=c+1; // 0 无色    1 黄色      2 红色
      }
      dfs(1,1,0,0);
      printf("%d
    ",Ans==INF?-1:Ans);
      return 0;
    }
    
    
  • 相关阅读:
    JavaScrip 数组/字典/循环
    初识javaScript
    css内容补充之其它
    position
    css的存在形式
    CSS选择器
    Html的Head内标签
    Linux设置FQDN
    saltstack 全面介绍
    jQuery文档处理
  • 原文地址:https://www.cnblogs.com/KingBenQi/p/12272232.html
Copyright © 2011-2022 走看看