AOJ0118
問題:Property Distribution
やるだけ問題。
再帰苦手なので再帰で書いた。
入力がw,hの順じゃなくてh,wの順でWAした。
#include<iostream> using namespace std; int dx[] = {0,0,1,-1}; int dy[] = {1,-1,0,0}; int dfs( char f[110][110] ,char c, int x , int y ) { if( f[y][x] == c ) { f[y][x] = 0; for( int i=0;i<4; ++i )dfs( f , c , x+dx[i] , y+dy[i] ); return 1; } else return 0; } int main() { int w,h; while( cin >> h >> w , w|h ) { char f[110][110] = {0}; int cnt = 0; for( int i=1;i<=h; ++i )for( int j=1; j<=w; ++j )cin >> f[i][j]; for( int i=1;i<=h; ++i )for( int j=1; j<=w; ++j ) if( f[i][j] )cnt+=dfs(f,f[i][j],j,i); cout << cnt << endl; } }