• 天大 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;
    }
  • 相关阅读:
    2015 12 04课堂随便
    java 循环制作三角形
    2015 12 3课堂随笔
    张王李相亲应用if else
    2015 12 01 课堂笔记。 运算符的使用
    Java图形化界面设计——布局管理器之null布局(空布局)
    jQuery
    jQuery
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/wft1990/p/5862784.html
Copyright © 2020-2023  润新知