zoukankan      html  css  js  c++  java
  • HDU 1198 Farm Irrigation

    点我看题目

    题意 :给你ABCDEFGHIJK 11个块,块上的图案如图所示,然后给你输入,将这些方块按照输入摆好,问你有几个联通块。

    思路 :这个其实是个最简单的并查集,但是因为给的形式不好处理所以看不太出来,只要把那些图案处理好了就OK了。会神告诉我上下左右标记一下就行,像A可以标记为1,0,1,0。

     1 #include <iostream>
     2 #include <stdio.h>
     3 
     4 using namespace std;
     5 
     6 int a[12][4] = {{1,0,1,0},{1,0,0,1},{0,1,1,0},{0,1,0,1},{1,1,0,0},{0,0,1,1},{1,0,1,1},{1,1,1,0},{0,1,1,1},{1,1,0,1},{1,1,1,1}} ;
     7 char ch[55][55] ;
     8 int f[4000] ;
     9 
    10 int find_set(int x)
    11 {
    12     if(x == f[x])
    13         return x ;
    14     return f[x] = find_set(f[x]) ;
    15 
    16 }
    17 
    18 void Union(int x,int y)
    19 {
    20     int fx = find_set(x) ;
    21     int fy = find_set(y) ;
    22     if(fx != fy)
    23         f[fx] = fy ;
    24 }
    25 int main()
    26 {
    27     int m,n ;
    28     while(~scanf("%d %d",&n,&m))
    29     {
    30         if(m == -1 && n == -1) break ;
    31         for(int i = 0 ; i < m*n ; i++)
    32             f[i] = i ;
    33         for(int i = 0 ; i < n ; i++)
    34             scanf("%s",ch[i]) ;
    35         for(int i = 0 ; i < n ; i++)
    36         {
    37             for(int j = 0 ; j < m ; j++)
    38             {
    39                 if(a[ch[i][j]-'A'][3] == 1 && a[ch[i][j+1]-'A'][2] == 1 && j+1 < m)
    40                     Union(i*m+j,i*m+j+1) ;
    41                 if(a[ch[i][j]-'A'][1] == 1 && a[ch[i+1][j]-'A'][0] == 1 && i+1 < n)
    42                     Union(i*m+j,(i+1)*m+j) ;
    43             }
    44         }
    45         int sum = 0 ;
    46         for(int i = 0 ; i < m*n ; i++)
    47             if(f[i] == i)
    48                 sum++ ;
    49         printf("%d
    ",sum) ;
    50     }
    51     return 0;
    52 }
    View Code
  • 相关阅读:
    stm32 IO模式
    stm32的ADC
    bsp
    stm32的硬件调试设置
    RTC实时时钟
    快手2019笔试题 “回文子串" 解题思路
    C++内存修改器开源代码
    FC游戏修改教程(hack)小白文。
    GLFW+GLEW搭建opengl环境(备忘)
    8086 IO读写操作
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3664197.html
Copyright © 2011-2022 走看看