zoukankan      html  css  js  c++  java
  • 天大 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;
    }
  • 相关阅读:
    Storm
    Linux 网络配置
    .NET Remoting
    jwt
    new操作符
    元数据
    C# lock
    三十而立
    面试
    灯火
  • 原文地址:https://www.cnblogs.com/wft1990/p/5862784.html
Copyright © 2011-2022 走看看