首页 > 代码库 > 天大 ACM 1090. City hall
天大 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。