解题思路:愚笨的方法

注意事项:

参考代码:



#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论