解题思路:愚笨的方法
注意事项:
参考代码:
#include <stdio.h>
#define N 1000
int main() {
int n1, n2;
char sl[N][N];
int i, j, m, n, count1,count2;
count1 = 0;
count2=0;
while(scanf("%d %d", &n1, &n2)&&(n1!=0&&n2!=0)){
// getchar();
for (i = 0; i < n1; i++) {
// scanf_s("%s", sl[i],n2+1);//这里的n表示缓冲区大小,最多只能容纳n-1个字符*/
scanf("%s",sl[i]);
}
// printf("\n");
//解决中间部分的数字
for (i = 1; i < n1-1; i++) {
for (j = 1; j < n2-1; j++) {
if (sl[i][j] == '.') {
for (m = i - 1; m <= i + 1; m++) {
for (n = j - 1; n <= j + 1; n++) {
if (sl[m][n] == '*') {
count1++;
}
}
}
sl[i][j] = count1+48;
count1 = 0;
}
}
}
//解决上边的数字
for(j=1;j<n2-1;j++){
if(sl[0][j]=='.'){
for(i=0;i<2;i++){
for(m=j-1;m<=j+1;m++){
if(sl[i][m]=='*'){
count1++;
}
}
}
sl[0][j]=count1+48;
count1=0;
}
}
for(j=1;j<n2-1;j++){
if(sl[n1-1][j]=='.'){
for(i=n1-2;i<n1;i++){
for(m=j-1;m<=j+1;m++){
if(sl[i][m]=='*'){
count1++;
}
}
}
sl[n1-1][j]=count1+48;
count1=0;
}
}
for(i=0,j=0;i<n1;i++){
if(sl[i][j]=='.'){
for(m=i-1;m<=i+1;m++){
for(n=j;n<=j+1;n++){
if(sl[m][n]=='*'){
count1++;
}
}
}
sl[i][j]=count1+48;
count1=0;
}
}
for(i=0,j=n2-1;i<n1;i++){
if(sl[i][j]=='.'){
for(m=i-1;m<=i+1;m++){
for(n=j-1;n<=j;n++){
if(sl[m][n]=='*'){
count1++;
}
}
}
sl[i][j]=count1+48;
count1=0;
}
}
count2++;
printf("Field #%d:\n",count2);
for (i = 0; i < n1; i++) {
printf("%s\n",sl[i]);
}
printf("\n");
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复