1801.cpp

来自「杭电 acm部分代码 有兴趣的可以下载 谢谢」· C++ 代码 · 共 66 行

CPP
66
字号
#include <iostream>
using namespace std;
char paint[101][101];
char white[101][101];
int m, n, r, c;
void change(int a, int b, int c, int d)
{
	int i, j;
	for (i = a; i < a + c; i++)
	{
		for (j = b; j < b + d; j++)
		{
			if (white[i][j] == '0')
			{
				white[i][j] = '1';
			}
			else if (white[i][j] == '1')
			{
				white[i][j] = '0';
			}
		}
	}
}
int main()
{
	int i, j, step;
	while (cin >> m >> n >> r >> c)
	{
		if (m == 0 && n == 0 && r == 0 && c == 0)
		{
			break;
		}
		for (i = 0; i < m; i++)
		{
			scanf("%s", paint[i]);
			for (j = 0; j < n; j++)
			{
				white[i][j] = '0';
			}
		}
		for (step = 0, i = 0; i < m - r + 1; i++)
		{
			for (j = 0; j < n - c + 1; j++)
			{
				if (white[i][j] != paint[i][j])
				{
					change(i, j, r, c);
					step++;
				}
			}
		}
		for (i = 0; i < m; i++)
		{
			for (j = 0; j < n; j++)
			{
				if (white[i][j] != paint[i][j])
				{
					step = -1;
					break;
				}
			}
		}
		cout << step << endl;
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?