题解 P5079 【Tweetuzki 爱伊图】

· · 题解

从1到0枚举,找到当前数对比后面的数独特之处,遍历的时候一列一列来,由于

```cpp #include<cstdio> using namespace std; typedef long long LL; LL n,m; char a[20][100005]; int main(){ scanf("%lld%lld",&n,&m); for(LL i=1;i<=n;++i){ for(LL j=1;j<=m;++j) scanf(" %c",&a[i][j]); } for(LL i=1;i<=m;++i){ for(LL j=1;j<=n;++j){ if(a[j][i]=='#'){ if(i>=m-1){ printf("1"); return 0; }else if(a[j][i+1]=='.'&&a[j+1][i+1]=='.'&&a[j+2][i+1]=='.'){ printf("1"); i+=1; }else{ if(a[j+1][i+2]=='#'&&a[j+3][i+2]=='.'){ printf("2"); }else if(a[j+1][i]=='.'&&a[j+2][i]=='#'&&a[j+3][i]=='.'){ printf("3"); }else if(a[j][i+1]=='.'&&a[j+4][i+1]=='.'){ printf("4"); }else if(a[j+1][i]=='#'&&a[j+3][i]=='.'&&a[j+1][i+2]=='.'){ printf("5"); }else if(a[j+1][i]=='#'&&a[j+1][i+1]=='.'&&a[j+1][i+2]=='.'){ printf("6"); }else if(a[j+1][i]=='.'){ printf("7"); }else if(a[j+1][i]=='#'&&a[j+3][i]=='#'&&a[j+2][i+1]=='#'){ printf("8"); }else if(a[j+3][i]=='.'){ printf("9"); }else printf("0"); i+=3; } break; } } } return 0; } ```