2 条题解
-
2
思路
这道题可以直接用8个if。
这道题还需要做特判:
如果 i==1
如果 i==n
如果 j==1
如果 j==m
此外,如果你用的是
scanf("%c",&a[i][j]);
的话,那么你一定要在每行输出完了之后在数如一个字符,因为还要输入一个'\n'。
最后,
AC代码:
#include<bits/stdc++.h> using namespace std; int n,m; char a[110][110],c; int main(){ cin >> n >> m ; scanf("%c",&c); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%c",&a[i][j]); } scanf("%c",&c); } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ int cnt = 0; if(a[i][j]=='*'){continue;} else if(i==1){ if(j==1){ if(a[i+1][j]=='*'){cnt++;} if(a[i+1][j+1]=='*'){cnt++;} if(a[i][j+1]=='*'){cnt++;} }else if(j==m){ if(a[i+1][j]=='*'){cnt++;} if(a[i+1][j-1]=='*'){cnt++;} if(a[i][j-1]=='*'){cnt++;} }else{ if(a[i+1][j]=='*'){cnt++;} if(a[i+1][j+1]=='*'){cnt++;} if(a[i+1][j-1]=='*'){cnt++;} if(a[i][j+1]=='*'){cnt++;} if(a[i][j-1]=='*'){cnt++;} } }else if(i==n){ if(j==1){ if(a[i-1][j]=='*'){cnt++;} if(a[i-1][j+1]=='*'){cnt++;} if(a[i][j+1]=='*'){cnt++;} }else if(j==m){ if(a[i-1][j]=='*'){cnt++;} if(a[i-1][j-1]=='*'){cnt++;} if(a[i][j-1]=='*'){cnt++;} }else{ if(a[i-1][j]=='*'){cnt++;} if(a[i-1][j+1]=='*'){cnt++;} if(a[i-1][j-1]=='*'){cnt++;} if(a[i][j+1]=='*'){cnt++;} if(a[i][j-1]=='*'){cnt++;} } }else{ if(j==1){ if(a[i-1][j]=='*'){cnt++;} if(a[i-1][j+1]=='*'){cnt++;} if(a[i+1][j]=='*'){cnt++;} if(a[i+1][j+1]=='*'){cnt++;} if(a[i][j+1]=='*'){cnt++;} }else if(j==m){ if(a[i-1][j]=='*'){cnt++;} if(a[i-1][j-1]=='*'){cnt++;} if(a[i+1][j]=='*'){cnt++;} if(a[i+1][j-1]=='*'){cnt++;} if(a[i][j-1]=='*'){cnt++;} }else{ if(a[i-1][j]=='*'){cnt++;} if(a[i-1][j+1]=='*'){cnt++;} if(a[i-1][j-1]=='*'){cnt++;} if(a[i+1][j]=='*'){cnt++;} if(a[i+1][j+1]=='*'){cnt++;} if(a[i+1][j-1]=='*'){cnt++;} if(a[i][j+1]=='*'){cnt++;} if(a[i][j-1]=='*'){cnt++;} } } a[i][j]=char(cnt+48); } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ printf("%c",a[i][j]); } cout << "\n" ; } return 0; }
-
1
AC代码
#include<bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; char k[n+1][m+1]={0},ans[n+1][m+1]={0}; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>k[i][j]; ans[i][j]='0'; } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(k[i][j]=='*')ans[i][j]='*'; if(k[i][j]=='?') { if(k[i][j+1]=='*')ans[i][j]++; if(k[i][j-1]=='*')ans[i][j]++; if(k[i+1][j]=='*')ans[i][j]++; if(k[i+1][j+1]=='*')ans[i][j]++; if(k[i+1][j-1]=='*')ans[i][j]++; if(k[i-1][j]=='*')ans[i][j]++; if(k[i-1][j-1]=='*')ans[i][j]++; if(k[i-1][j+1]=='*')ans[i][j]++; } } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cout<<ans[i][j]; } cout<<endl; } return 0; }
- 1
信息
- ID
- 577
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 42
- 已通过
- 27
- 上传者