⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1035.cpp

📁 我的URAL的1000 ~ 1050 的全部代码 包含WA 最后AC的程序 有2~3个比较难的是MAIGO的程序
💻 CPP
字号:
//因为把deg声明成bool调了好久
//欧拉路径  
#include <iostream>
using namespace std;

const int maxN = 201;
const int maxM = 201;
bool fld[ maxN + 1 ][ maxM + 1 ], frd[ maxN + 1 ][ maxM + 1 ], //front left Diag && right diag 
     bld[ maxN + 1 ][ maxM + 1 ], brd[ maxN + 1 ][ maxM + 1 ],
     visit[ maxN + 1 ][ maxM + 1 ];
int  deg[ maxN + 1 ][ maxM + 1 ];
      
int n, m, cnt ,ans;
void readIn()
{
     char c;
     int i, j;
     cin >> n >> m;
     for( i = 1; i <= n; i++ )
          for( j = 1; j <= m; j++ )
          {
               cin >> c;
               if( c == '/' || c == 'X' ) fld[i][j] = true;
               if( c == '\\' || c == 'X' ) frd[i][j] = true;
          }

     for( i = 1; i <= n; i++ )
          for( j = 1; j <= m; j++ )
          {
               cin >> c;
               if( c == '/' || c == 'X' ) bld[i][j] = true;
               if( c == '\\' || c == 'X' ) brd[i][j] = true;
          }

}
void floodfill( int x, int y )
{
     if ( visit[x][y] ) return;
     
     visit[x][y] = true;
     cnt += deg[x][y];
     if( frd[x][y] || brd[x][y] ) floodfill(x-1,y-1);
     if( frd[x+1][y+1] || brd[x+1][y+1] ) floodfill(x+1,y+1);
     if( fld[x+1][y] || bld[x+1][y] ) floodfill(x+1,y-1);
     if( fld[x][y+1] || bld[x][y+1] ) floodfill(x-1,y+1);
     
}
int main()
{
    freopen( "1035.in", "r", stdin );
    freopen( "1035.out","w", stdout);
    int i, j;
    int f, b;
    readIn();
    for( i = 0; i <= n; i++ )
         for( j = 0; j <= m; j++ )
         {
              f = 0, b = 0;
              if( frd[i][j] ) f++; if( brd[i][j] ) b++;
              if( frd[i+1][j+1] ) f++; if( brd[i+1][j+1] ) b++;
              if( fld[i+1][j] ) f++; if( bld[i+1][j] ) b++;
              if( fld[i][j+1] ) f++; if( bld[i][j+1] ) b++;
              if( (f + b) == 0 ) visit[i][j] = true;
              else deg[i][j] = abs(f-b);
         }
    ans = 0;
    for( i = 0; i<= n; i++ )
         for( j = 0; j <= m; j++ )
              if( !visit[i][j] )
              {
                  cnt = 0;
                  floodfill(i,j);
                  if( cnt == 0 ) ans++;
                  else ans += cnt/2;
              }
    cout << ans << endl;
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -