Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Property Distribution"
https://onlinejudge.u-aizu.ac.jp/problems/0118
・財産の分配
僕が作成、提出したコードは、以下のとおりです。
・Aizu Online Judge in C++ #Volume1 - 0118 : Property Distribution
/* Aizu Online Judge in C++ #Volume1 - 0118 : Property Distribution https://onlinejudge.u-aizu.ac.jp/problems/0118 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; ll h,w,H[4]={-1,0,1,0},W[4]={0,1,0,-1}; string s[101]; void DFS(ll h2,ll w2,char c){ s[h2][w2]='.'; for(ll i=0;i<4;i++){ ll hh=h2+H[i],ww=w2+W[i]; if((0<=hh && hh<h) && (0<=ww && ww<w) && s[hh][ww]==c){ DFS(hh,ww,c); } } } int main(void){ while(cin>>h>>w,h){ ll cnt=0; for(ll i=0;i<h;i++){ cin>>s[i]; } for(ll i=0;i<h;i++){ for(ll j=0;j<w;j++){ if(s[i][j]!='.'){ cnt++; DFS(i,j,s[i][j]); } } } cout<<cnt<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/