题解 P5079 【Tweetuzki 爱伊图】
y2823774827y
·
·
题解
从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;
}
```