想了半天怎么优化暴力,就是没想出来,就想着先把暴力的写一下,谁知道提交上去就过了。 当然,还是要学习优化一下。 建议增加数据卡一下暴力。
#include <iostream>
using namespace std;
const int N = 1010;
char map[N][N];
int main()
{
int n, m; cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> map[i][j];
int res = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
if (map[i][j]=='F')
{
//从此处开始遍历,限制最远能到达的列
int mxj = m;
for (int ti = i; ti <= n; ti++)
{
for (int tj = j; tj <= mxj; tj++) //限制最远的列
{
if (map[ti][tj] == 'R')
{
mxj = tj - 1; //最远的符合要求的列
break;
}
res = max(res, (ti - i + 1) * (tj - j + 1));
//每走一次就算一次
}
}
}
}
}
cout << 3 * res << endl;
return 0;
}