飞道的博客

练习题:暗恋

305人阅读  评论(0)

问题描述

  同在一个高中,他却不敢去找她,虽然在别人看来,那是再简单不过的事。暗恋,是他唯一能做的事。他只能在每天课间操的时候,望望她的位置,看看她倾心的动作,就够了。操场上的彩砖啊,你们的位置,就是他们能够站立的地方,他俩的关系就像砖与砖之间一样固定,无法动摇。还记得当初铺砖的工人,将整个操场按正方形铺砖(整个操场可视为R行C列的矩阵,矩阵的每个元素为一块正方形砖块),正方形砖块有两种,一种为蓝色,另一种为红色。我们定义他和她之间的“爱情指标”为最大纯色正方形的面积,请你写一个程 序求出“爱情指标”。

输入格式

  第一行两个正整数R和C。

  接下来R行C列描述整个操场,红色砖块用1来表示,蓝色砖块用0来表示。

输出格式

  一个数,表示他和她之间的“爱情指标”。

样例输入

5 8

0 0 0 1 1 1 0 1

1 1 0 1 1 1 1 1

0 1 1 1 1 1 0 1

1 0 1 1 1 1 1 0

1 1 1 0 1 1 0 1

样例输出

9

数据规模和约定

  40%的数据R,C<=10;

  70%的数据R,C<=50;

  100%的数据R,C<=200;


   
  1. #include<iostream>
  2. using namespace std;
  3. int g[ 210][ 210];
  4. int r, c;
  5. bool check(int x, int y, int k,int *sum)
  6. {
  7. *sum = 0;
  8. int i, j;
  9. for (i = x; i <= x + k - 1; i++)
  10. {
  11. for (j = y; j <= y + k - 1; j++)
  12. {
  13. *sum += g[i][j];
  14. }
  15. }
  16. if (*sum == 0 || *sum == k * k)
  17. {
  18. *sum = k * k;
  19. return true;
  20. }
  21. else return false;
  22. }
  23. int main()
  24. {
  25. cin >> r >> c;
  26. int i, j, k = 1, sum = 0;
  27. for (i = 1; i <= r; i++)
  28. {
  29. for (j = 1; j <= c; j++)
  30. {
  31. cin >> g[i][j];
  32. }
  33. }
  34. int s = 0;
  35. for (i = 1; i <= r; i++)
  36. {
  37. for (j = 1; j <= c; j++)
  38. {
  39. while ( check(i, j, k, &sum) == true && i + k - 1 <= r && j + k - 1 <= c)
  40. {
  41. k++;
  42. s = max(s, sum);
  43. }
  44. }
  45. }
  46. cout << s << endl;
  47. return 0;
  48. }

转载:https://blog.csdn.net/m0_73648729/article/details/129147549
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场