天大 ACM 1090. City hall

Posted 泡面小王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了天大 ACM 1090. City hall相关的知识,希望对你有一定的参考价值。

此题的关键就在你是如何选择来计算需要加进去的砖块,是从小的height开始还是从大的height开始。本题是新建一个数组用来存储从最大的(最大的height)砖头开始的砖头数。代码中“for(int k=m;k>=1;k--)”

然后通过下面中的  str[iii][j]=‘1‘; 将其补上;进而再计算次最大的height的砖头数。以此类推,得出结论。

#include<iostream>
#include<cstring>
using namespace std;
const int M =200;
int main()
{
    int m,n;
    char str[M][M];
    int pp[M];
    cin>>m>>n;
    getchar();
    int i,j,k,ii,c;
    for(i=0;i<m;i++)
       gets(str[i]);
    for(k=m;k>=1;k--)
    {
        int count =0;
        for(j=0;j<n;j++)
        {
            for(i=0;i<m;i++)
            {
                if(str[i][j]==0)
                {
                    c=0;
                  for(ii=i;ii<m;ii++)
                  {
                    if(str[ii][j]==0)
                       c++;
                    else
                    {
                        ii--;
                        break;
                    }
                   }
                  if(c==k)
                  {
                     count++;
                     for(int iii=i;iii<=ii;iii++)
                       str[iii][j]=1;
                  }
                  i=ii;
             }
    
            }
        }
        pp[k-1]=count;
        
    }
    for(i=0;i<m;i++)
      if(pp[i]!=0)
       cout<<i+1<<" "<<pp[i]<<endl;
    return 0;
}

 

以上是关于天大 ACM 1090. City hall的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1505 City Game

「学习笔记」3.31代码学习

Irwin-Hall 分布学习笔记

HDU 4496 D-City(逆向并查集)

Monty-Hall问题的Monte-Carlo模拟

用一句Halle认识C 语言