數正方形

曉萌有一個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;
			
		}
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章