0067 - The Number of Island
#include <iostream> #include <string> using namespace std; void dfs(string data[], int i, int j) { data[i][j]='0'; if (j<12-1 && data[i][j+1]=='1') dfs(data,i,j+1); if (i<12-1 && data[i+1][j]=='1') dfs(data,i+1,j); if (0<j && data[i][j-1]=='1') dfs(data,i,j-1); if (0<i && data[i-1][j]=='1') dfs(data,i-1,j); } void Slove(string data[]) { int count=0; for (int i=1; i<12; ++i) cin >> data[i]; for (int i=0; i<12; ++i) for (int j=0; j<12; ++j) if (data[i][j] == '1') { ++count; dfs(data,i,j); } cout << count << endl; } int main(void) { string data[12]; while (cin >> data[0]) Slove(data); return 0; }
再帰するだけ。