晓萌有一个N×N的的棋盘,中间有N2个正方形的1×1的格子,他随机在棋盘上撒上一些棋子(假设全部正好落在各个格子里)。他希望知道,当前的棋盘上有多少个不包含棋子的,由至少四个1×1的格子组成的正方形(正方形之间可以有重叠的部分)。
样例输入
6
101111
001111
111111
001111
101101
111001
输出
2 10
3 4
4 1
(这道题是我在上java web实验课的时候偷偷做的。。。好担心老师会发现 -_-||| )
#include<iostream>
using namespace std;
int main()
{
int n, g[251][251];
char m[251][251];
while(cin>>n)
{
for (int i = 0; i < n; i++)
{
cin>>m[i];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (m[i][j] == '0')
g[i][j] = 0;
else
g[i][j] = 1;
}
}
for (int l = 2; l <= n; l++)
{
int t = n-l+1, k = 0;
for (int i = 0; i < t; i++)
{
for (int j = 0; j < t; j++)
{
if (g[i][j]==l-1 && g[i+1][j+1]==l-1 && g[i+1][j]==l-1 && g[i][j+1]==l-1)
{
g[i][j] = l;
k++;
}
}
}
if (!k)
break;
else
cout<<l<<" "<<k<<endl;
}
}
}