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;
}

再帰するだけ。