HackerRank Problem Ema's Supercomputer

暴力大法

Posted by An automatic pencil on December 18, 2018

题目

看题目戳我

题解思路

刚读题觉得好烦的题目,再一看数据范围,直接暴力。首先遍历两个加号的中心点位置,确定之后遍历每个加号大小,满足条件计数比较。

代码

#include <bits/stdc++.h>

using namespace std;



// Complete the twoPluses function below.
int twoPluses(vector<string> grid) {
    int m,n;
    m=grid.size();
    n=grid[0].length();
    int maxm=0;
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<m;k++)
            {
                for(int l=0;l<n;l++)
                {
                    vector<int> tmp(n,0);
                    vector<vector<int>> mark(m,tmp);
                    for(int first=0;i-first>=0&&i+first<m;first++)
                    {
                        if(j-first<0||j+first>=n) break;
                        if(grid[i-first][j]!='G'||grid[i+first][j]!='G'||grid[i][j-first]!='G'||grid[i][j+first]!='G') break;
                        mark[i-first][j]=1;
                        mark[i+first][j]=1;
                        mark[i][j-first]=1;
                        mark[i][j+first]=1;
                        int first_area=1+4*first;
                        for(int second=0;k-second>=0&&k+second<m;second++)
                        {
                            if(l-second<0||l+second>=n) break;
                            if(grid[k-second][l]!='G'||grid[k+second][l]!='G'||grid[k][l-second]!='G'||grid[k][l+second]!='G') break;
                            if(mark[k-second][l]||mark[k+second][l]||mark[k][l-second]||mark[k][l+second]) break;
                            int second_area=1+4*second;
                            maxm = max(maxm,first_area*second_area);
                        }
                    }
                }
            }
        }
    }
    return maxm;
}

int main()
{
 
    int n,m;
    cin>>n>>m;
    vector<string> grid(n);

    for (int i = 0; i < n; i++) {
        string grid_item;
        cin>>grid_item;
        grid[i] = grid_item;
    }

    int result = twoPluses(grid);

    cout<<result;

    return 0;
}

干就完事了!