zoukankan      html  css  js  c++  java
  • 【一本通1347】格子游戏

    (尽管可能各位大佬觉得很简单,但对于讲课时真的没看懂这个代码的蒟蒻,真的要写一写)

    这个题是一个神奇的二维的并查集,然而二维的真的好乱,弄得我搞不懂qwq

    jiuzhe代码食用吧emm

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    int n,m,x,y;
    char a;
    struct hyh{//首先定义了一个结构体,里面存横纵坐标
        int x,y;
    }f[201][201],k1,k2;
    hyh find(hyh sy){//也是“找父亲”,只不过变成了二维
        if(f[sy.x][sy.y].x==sy.x&&f[sy.x][sy.y].y==sy.y)return sy;//如果他自己的父亲是自己,返回
        f[sy.x][sy.y]=find(f[sy.x][sy.y]);
        return f[sy.x][sy.y];
    }
    void unionn(hyh a,hyh b){
        f[b.x][b.y]=a;//合并
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
          for(int j=1;j<=n;j++){
              f[i][j].x=i;
              f[i][j].y=j;
          }
        for(int i=1;i<=m;i++){
            cin>>x>>y>>a;
            if(a=='D'){
                k1=find(f[x][y]);
                k2=find(f[x+1][y]);
            }
            if(a=='R'){
                k1=find(f[x][y]);
                k2=find(f[x][y+1]);
            }
            if((k1.x==k2.x)&&(k1.y==k2.y)){
                cout<<i<<endl;
                return 0;
            }
            if((k1.x!=k2.x)||(k1.y!=k2.y))
                unionn(k1,k2);
        }
        cout<<"draw"<<endl;
        return 0;
    }
  • 相关阅读:
    iOS开发——keychain的使用
    iOS开发——策略模式
    iOS开发——MVC模式
    iOS开发——代理模式
    ExtjsCode_Test02Panel.js
    网站收藏
    关于ExtJs Form表单的赋值、获取、重置
    ExtJS分页start,limit,pageSize的研究
    使Grid可编辑
    如何禁用Grid中的ToolBar中的Button
  • 原文地址:https://www.cnblogs.com/zhuier-xquan/p/10759006.html
Copyright © 2011-2022 走看看