#include<iostream> #include<stdio.h> #include<string> #include<cstring> #include<string.h> #include<algorithm> using namespace std; void fun(string s[],int a[][120],int n,int k,int i,int j) { a[i][j] = 1; if (i - 1 >= 0 && s[i - 1][j] == '1' && !a[i - 1][j]) { fun(s, a, n, k, i - 1, j); } if (i + 1 < n&&s[i + 1][j] == '1' && !a[i + 1][j]) { fun(s, a, n, k, i + 1, j); } if (j - 1 >= 0 && s[i][j - 1] == '1' && !a[i][j - 1]) { fun(s, a, n, k, i, j - 1); } if (j + 1 < k&&s[i][j + 1] == '1' && !a[i][j + 1]) { fun(s, a, n, k, i, j + 1); } if (i - 1 >= 0 && j - 1 >= 0 && s[i - 1][j - 1] == '1' && !a[i - 1][j - 1]) { fun(s, a, n, k, i - 1, j - 1); } if (i - 1 >= 0 && j + 1 < k && s[i - 1][j + 1] == '1' && !a[i - 1][j + 1]) { fun(s, a, n, k, i - 1, j + 1); } if (i + 1 < n && j - 1 >= 0 && s[i + 1][j - 1] == '1' && !a[i + 1][j - 1]) { fun(s, a, n, k, i + 1, j - 1); } if (i + 1 < n && j + 1 < k && s[i + 1][j + 1] == '1' && !a[i + 1][j + 1]) { fun(s, a, n, k, i + 1, j + 1); } } int main() { int n, k; while (cin >> n >> k) { if (n == 0 && k == 0) { break; } string s[120]; int a[120][120] = {0}; int count = 0; for (int i = 0;i < n;i++) { cin >> s[i]; } for (int i = 0;i < n;i++) { for (int j = 0;j < k;j++) { if (s[i][j]=='1'&&!a[i][j]) { fun(s, a, n, k, i, j); count++; } } } cout << count << endl; } } |
Double click to view unformatted code.