hdu5319(模拟)

来源:互联网 发布:编程一小时网站 编辑:程序博客网 时间:2024/06/13 12:17

链接:点击打开链接

题意:有两把刷子,红色刷子沿‘\’方向,蓝色刷子沿‘\’方向,先用红色刷子再用蓝色刷子,都刷到的格子为绿色。给出一个矩阵表示最后的状态,求最少需要刷多少次可以达到最后的状态

代码:

#include <vector>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;char s[105][105];int main(){    int t,n,m,i,j,x,y,ans;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        for(i=1;i<=n;i++){            scanf("%s",s[i]+1);            m=strlen(s[i]+1);        }        ans=0;        for(i=1;i<=n;i++){                      //换一个角度考虑,考虑对每个点来说哪种            for(j=1;j<=m;j++){                  //情况不用考虑                if(s[i][j]=='R')                if(s[i-1][j-1]!='R'&&s[i-1][j-1]!='G')                ans++;                if(s[i][j]=='B')                if(s[i-1][j+1]!='B'&&s[i-1][j+1]!='G')                ans++;                if(s[i][j]=='G'){                if(s[i-1][j+1]!='B'&&s[i-1][j+1]!='G')                ans++;                if(s[i-1][j-1]!='R'&&s[i-1][j-1]!='G')                ans++;                }            }        }        printf("%d\n",ans);    }    return 0;}

0 0