其实刚开始我也没想出来,后来看了其他大神的描述终于明白了,其实就是把每一行每一列遍历一遍。
description |
小明最近在粉刷墙壁,他家的墙壁正好贴了8*8块瓷砖,可惜这些瓷砖都是白色的,小明想把他其中一些刷成黑的,于是就把他家的的墙刷了一下。最后刷完了,小明想知道他至少刷了多少次才刷成如今这个模样。现在我们知道这面墙最后的样子,而且小明也记得他刷的时候每次都是刷了一整列或一整行的瓷砖(每块瓷砖可以被刷多次)。聪明的你能帮小明算算吗? |
input |
输入有8行每行8个字母 |
output |
最少刷的次数 |
sample_input |
WWWBWWBW BBBBBBBB WWWBWWBW WWWBWWBW WWWBWWBW WWWBWWBW WWWBWWBW WWWBWWBW WWWWWWWW BBBBBBBB WWWWWWWW WWWWWWWW WWWWWWWW WWWWWWWW WWWWWWWW WWWWWWWW |
sample_output |
3 1 代码如下 using namespace std; char st[10][10]; int main() { while(cin>>st[0]) { int sum=0,ans=0,a,b; for(int i=1;i<8;i++) cin>>st[i]; for(int i=0;i<8;i++) for(int j=0;j<8;j++) if(st[i][j]=='B') ans++; if(ans==64) sum=8; else//遍历行和列 { for(int i=0;i<8;i++) { a=0,b=0; for(int j=0;j<8;j++) { if(st[i][j]=='B') a++; if(st[j][i]=='B') b++; } if(a==8) sum++; if(b==8) sum++; } } cout<<sum<<endl; } return 0; } |