现在的位置: 首页 > 综合 > 正文

炸弹人(暴力枚举)

2018年04月29日 ⁄ 综合 ⁄ 共 885字 ⁄ 字号 评论关闭
/*
    依次枚举每一个点,很水的一道搜素题目,被我写的这么弱智,其实也是看啊哈上面
    写的,说实话,这样的写法真的是简单易懂,很能理解暴力枚举的特点,一个一个点
    的枚举,一个一个点的找,只要找到了我们需要的目标解,ok记录下来,继续往下找
    然后对于所有找到的解进行更新,找到一个最大的,那么就是我们所说的ans了。


    记住4方向搜索的方法,以后会陆续更新8方向的搜素,这些都是在题目中很常见的QAQ
    以向下搜素为例,其余三个方向类推就好。

    x = i;y = j;//在进行搜素之前,一定要保留这个点的坐标,如果这个点的坐标没了,
                    那么在某个方向搜索结束后,就不知道该怎么返回到原目标点了,
                    也就是说,必须要记录初始搜素点的位置。
    while ( a[x][y]!='#' )
        {
            if ( a[x][y] == '.' )
                sum++;
                x++;
        }


*/

# include<cstdio>
# include<iostream>

using namespace std;

char a[20][21];
int map = 0;
int sum = 0;
int p,q,x,y,n,m;

int main(void)
{
    cin>>n>>m;
    for ( int i = 0;i < n;i++ )
        {
            for ( int j = 0;j < m;j++ )
                {
                    cin>>a[i][j];
                }
        }
        for ( int i = 0;i < n;i++ )
            {
                for ( int j = 0;j < m;j++ )
                    {
                        if ( a[i][j] == '.' )
                            {
                                sum = 0;
                                x = i;y = j;
                                while ( a[x][y]!='#')
                                    {
                                        if ( a[x][y] == 'G' )
                                            sum++;
                                            x++;
                                    }
                                    x = i;y = j;
                                    while ( a[x][y]!='#' )
                                        {
                                            if ( a[x][y] == 'G' )
                                                sum++;
                                                x--;
                                        }
                                        x = i;y = j;
                                        while ( a[x][y]!='#' )
                                            {
                                                if ( a[x][y] == 'G' )
                                                    sum++;
                                                    y--;
                                            }
                                            x = i;y = j;
                                            while ( a[x][y]!='#' )
                                                {
                                                    if ( a[x][y] == 'G' )
                                                        sum++;
                                                        y++;
                                                }
                                                if ( sum>map )
                                                    map = sum;
                                                    p = i;
                                                    q = j;
                            }
                    }
            }

            cout<<p<<" "<<q<<endl;
            cout<<map<<endl;



    return 0;
}

抱歉!评论已关闭.