标签:并且 out turn can cout ace -- i++ har
题意:刷墙,两把刷子,只能沿对角线刷,并且一次必须刷完一条线。红色刷子沿‘\‘ 方向,蓝色刷子沿‘/‘方向,都刷到的格子为绿色。给出最终状态,求最少需要刷多少次可以达到。
思路:对于‘\‘,如果当前格子为红色或者绿色,前一个格子(斜线上的)既不是红色也不是绿色,则必然要刷一次。同理,‘/‘上的也是。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char s[55][55]; int T,n; int main() { cin>>T; while(T--) { cin>>n; int ans=0; for(int i=1;i<=n;i++) scanf("%s",s[i]+1); int m=strlen(s[1]+1); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(s[i][j]==‘R‘||s[i][j]==‘G‘) { if(!(s[i-1][j-1]==‘R‘||s[i-1][j-1]==‘G‘)) ans++;//左对角线 } } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(s[i][j]==‘B‘||s[i][j]==‘G‘) { if(!(s[i-1][j+1]==‘B‘||s[i-1][j+1]==‘G‘)) ans++;//右对角线 } } } cout<<ans<<endl; } return 0; }
标签:并且 out turn can cout ace -- i++ har
原文地址:https://www.cnblogs.com/Fy1999/p/9029456.html