17 条题解

  • 1
    @ 2026-5-24 20:02:21

    #include<bits/stdc++.h>

    using namespace std;

    const int N=1e5+5;

    string a[100];

    int main(){

    int n,m;

    cin>>n>>m;

    for(int i=0;i<n;i++)

    cin>>a[i];
    

    for(int i=0;i<n;i++){

    for(int j=0;j<m;j++){	
    	
      if(a[i][j]=='*')cout<<"*";
    		
      else
    		
      {
    		
        int sum=0;
    			
        if(i>0&&a[i-1][j]=='*')sum++;
    			
        if(i>0&&j>0&&a[i-1][j-
        
        1]=='*')sum++;
    			
        
        if(i>0&&j<m-1&&a[i-1][j+1]=='*')sum++;
    			
        if(j>0&&a[i][j-1]=='*')sum++;
    			
        if(j<m-1&&a[i][j+1]=='*')sum++;
    			
        if(i+1<n&&a[i+1][j]=='*')sum++;
    			
        if(i+1<n&&j>0&&a[i+1][j-1]=='*')sum++;
    			
        if(i+1<n&&j<m-1&&a[i+1][j+1]=='*')sum++;
    			
        cout<<sum;
    	
    		}
    	
    }
    	
    cout<<endl;
    

    }

    return 0; }

    • 1
      @ 2024-11-15 23:39:03
      #include <bits/stdc++.h>
      using namespace std;
      int a,b,c[114][114];
      string s[114];
      int main(){
      	cin >> a >> b;
      	for(int i = 0 ; i < a ; i++) cin >> s[i];
      	for(int i = 0 ; i < a ; i++){
      		for(int j = 0 ; j < b ; j++){
      			if(s[i][j] == '*'){
      				c[i][j] = -114514;
      				if(i == 0){
      					if(j == 0) c[i+1][j]++,c[i+1][j+1]++,c[i][j+1]++;
      					else c[i][j-1]++,c[i+1][j-1]++,c[i+1][j]++,c[i+1][j+1]++,c[i][j+1]++;
      				}
      				else{
      					if(j == 0) c[i-1][j]++,c[i-1][j+1]++,c[i+1][j]++,c[i+1][j+1]++,c[i][j+1]++;
      					else c[i-1][j-1]++,c[i][j-1]++,c[i+1][j-1]++,c[i+1][j]++,c[i+1][j+1]++,c[i][j+1]++,c[i-1][j]++,c[i-1][j+1]++;
      				}
      			}
      		}
      	}
      	for(int i = 0 ; i < a ; i++){
      		for(int j = 0 ; j < b ; j++){
      			if(c[i][j] < 0) cout << "*";
      			else cout << c[i][j];
      		}
      		cout << endl;
      	}
      	return 0;
      }
      
      • 0
        @ 2026-5-24 19:51:02
        #include<bits/stdc++.h>
        #define int long long
        using namespace std;
        const int N=1e4+10;
        const int INF=0x3f3f3f3f;
        string s[N];
        signed main()
        {
        	int n,m;
        	cin >> n >> m;
        	for(int i=0;i<n;i++)
        	{
        		cin >> s[i];
        	} 
        	for(int i=0;i<n;i++)
        	{
        		for(int j=0;j<m;j++)
        		{
        			if(s[i][j]=='*')cout << "*";
        			else
        			{
        				int sum=0;
        				if(i>0&&s[i-1][j]=='*')sum++;
        				if(i>0&&j>0&&s[i-1][j-1]=='*')sum++;
        				if(i>0&&j<m-1&&s[i-1][j+1]=='*')sum++;
        				if(j>0&&s[i][j-1]=='*')sum++;
        				if(j<m-1&&s[i][j+1]=='*')sum++;
        				if(i+1<n&&s[i+1][j]=='*')sum++;
        				if(i+1<n&&j>0&&s[i+1][j-1]=='*')sum++;
        				if(i+1<n&&j<m-1&&s[i+1][j+1]=='*')sum++;
        				cout << sum;
        			}
        		}
        		cout << endl;
        	}
            return 0;
        }
        
        
        
        • 0
          @ 2025-3-30 11:30:00

          #include <math.h>

          #include

          #include <stdio.h>

          #include

          #include

          #include

          #include <string.h>

          #include

          using namespace std;

          #define LL long long

          const int N = 1e5 + 10;

          const int INF = 0x3f3f3f3f;

          char a[110][110];

          int dx[] = {1,1,1,-1,-1,-1,0,0};

          int dy[] = {0,1,-1,0,1,-1,1,-1};

          int main()

          {

          int n,m;
          
          cin >> n >> m;
          
          for(int i = 0; i < n; i++)
          
              cin >> a[i];
          
          for(int i = 0; i < n; i++)
          
          {
          
              for(int j = 0; j < m; j++)
          
              {
          
                  int num = 0;
          
                  if(a[i][j] == '*')
          
                      cout << "*";
          
                  else
          
                  {
          
                      for(int k = 0; k < 8; k++)
          
                      {
          
                          int x = i + dx[k];
          
                          int y = j + dy[k];
          
                          if(x < 0 && y < 0 && x >= n && y >= m)
          
                              continue;
          
                          if(a[x][y] == '*')
          
                              num++;
          
                      }
          
                      cout << num;
          
                  }
          
              }
          
              cout << endl;
          
          }
          

          }

          • 0
            @ 2025-2-28 19:39:50

            #include<bits/stdc++.h> using namespace std; const int N=1e2+5,INF=0x3f3f3f3f; int n,m,a[N][N]; char x[N][N]; int main() { cin>>n>>m; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>x[i][j]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(x[i-1][j-1]=='*')a[i][j]++; if(x[i-1][j]=='*')a[i][j]++; if(x[i-1][j+1]=='*')a[i][j]++; if(x[i][j-1]=='*')a[i][j]++; if(x[i][j+1]=='*')a[i][j]++; if(x[i+1][j-1]=='*')a[i][j]++; if(x[i+1][j]=='*')a[i][j]++; if(x[i+1][j+1]=='*')a[i][j]++; if(x[i][j]=='*')a[i][j] = -1; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]==-1)cout<<"*"; else cout<<a[i][j]; } cout<<endl; } return 0; }

            • 0
              @ 2023-11-19 17:04:59

              题目传送门

              这道是个字符串的题,有许多人在刚开始做这道题的时候都会想着把角,边,中三个区域分别讨论(我刚开始就是这么想的),可是这样既复杂又容易出错。 我们完全可以先把整个地图给加一个边框,也就是我们把边框上的每一个点令其为'?',这样遍历n×mn\times m的表格的时候不管这个点是四个角还是边上的,都可以直接判断周围的八个点。否则就会判断到周围有一个点是''(也就是啥都没有)。


              我们在遍历的时候i,ji,j都得从1开始遍历,要给边框留下1的宽度。每次遍历完一个点pp都得清零。


              代码就将就看看吧:

              #include<bits/stdc++.h>
              #define endl '\n'
              using namespace std;
              const int N = 105;
              char a[N][N];
              int p=0,n,m;
              int main() {
              	ios::sync_with_stdio(false);
              	cin.tie(0);
              	cout.tie(0);
              	cin>>n>>m;
              	for(int i=1; i<=n; i++) {
              		for(int j=1; j<=m; j++) {
              			cin>>a[i][j];
              		}
              	}
              	for(int i=0; i<=n+1; i++) {
              		a[0][i]='?';
              	}
              	for(int i=0; i<=n+1; i++) {
              		a[n+1][i]='?';
              	}
              	for(int j=0; j<=m+1; j++) {
              		a[j][0]='?';
              	}
              	for(int j=0; j<=m+1; j++) {
              		a[j][m+1]='?';
              	}
              	for(int i=1; i<=n; i++) {
              		for(int j=1; j<=m; j++) {
              			if(a[i][j]=='?') {
              				if(a[i-1][j]=='*')p++;
              				if(a[i+1][j]=='*')p++;
              				if(a[i][j+1]=='*')p++;
              				if(a[i][j-1]=='*')p++;
              				if(a[i-1][j-1]=='*')p++;
              				if(a[i-1][j+1]=='*')p++;
              				if(a[i+1][j-1]=='*')p++;
              				if(a[i+1][j+1]=='*')p++;
              				cout<<p;
              				p=0;
              				continue;
              			}
              			cout<<a[i][j];
              		}
              		cout<<endl;
              	}
              	return 0;
              }
              
              • @ 2023-11-19 17:06:28

                真心劝那些洛谷,csdn抄题解的Oiers别再发了

              • @ 2023-11-20 17:14:11

                完了我发现加不加边框这道题都可以对ovo

                #include<bits/stdc++.h>
                #define endl '\n'
                using namespace std;
                const int N = 105;
                char a[N][N];
                int p=0,n,m;
                int main() {
                	ios::sync_with_stdio(false);
                	cin.tie(0);
                	cout.tie(0);
                	cin>>n>>m;
                	for(int i=1; i<=n; i++) {
                		for(int j=1; j<=m; j++) {
                			cin>>a[i][j];
                		}
                	}
                	for(int i=1; i<=n; i++) {
                		for(int j=1; j<=m; j++) {
                			if(a[i][j]=='?') {
                				if(a[i-1][j]=='*')p++;
                				if(a[i+1][j]=='*')p++;
                				if(a[i][j+1]=='*')p++;
                				if(a[i][j-1]=='*')p++;
                				if(a[i-1][j-1]=='*')p++;
                				if(a[i-1][j+1]=='*')p++;
                				if(a[i+1][j-1]=='*')p++;
                				if(a[i+1][j+1]=='*')p++;
                				cout<<p;
                				p=0;
                				continue;
                			}
                			cout<<a[i][j];
                		}
                		cout<<endl;
                	}
                	return 0;
                }
                
              • @ 2024-12-1 20:45:03

                😕 😄

            • 0
              @ 2023-11-19 16:57:37
              #include<iostream>
              using namespace std;
              int ans[105][105];
              int main()
              {
              	int n,m;
              	cin>>n>>m;
              	for(int i=1;i<=n;i++)
              	{
              		for(int j=1;j<=m;j++)
              		{
              			char str;
              			cin>>str;
              			if(str=='*') ans[i][j]=1;
              			else ans[i][j]=0;
              		}
              	}
              	for(int i=1;i<=n;i++)
              	{
              		for(int j=1;j<=m;j++)
              		{
              			int sum=0;
              			if(ans[i][j]==1) cout<<'*';
              			else
              			{
              				if(ans[i][j+1]==1) sum++;
              				if(ans[i][j-1]==1) sum++;
              				if(ans[i-1][j]==1) sum++;
              				if(ans[i+1][j]==1) sum++;
              				if(ans[i+1][j+1]==1) sum++;
              				if(ans[i+1][j-1]==1) sum++;
              				if(ans[i-1][j+1]==1) sum++;
              				if(ans[i-1][j-1]==1) sum++;
              				cout<<sum;
              			}
              		}
              		cout<<endl;
              	}
              	return 0;
              }
              
              • @ 2023-11-20 16:27:22

                大哥你和你楼下那个人写的都一样@maijiajun

            • 0
              @ 2022-9-17 16:00:09

              _

              #include <math.h>
              
              #include <stack>
              
              #include <stdio.h>
              
              #include <iostream>
              
              #include <vector>
              
              #include <iomanip>
              
              #include <string.h>
              
              #include <algorithm>
              
              using namespace std;
              
              #define LL long long
              
              const int N = 1e5 + 10;
              
              const int INF = 0x3f3f3f3f;
              
              char a[110][110];
              
              int dx[] = {1,1,1,-1,-1,-1,0,0};
              
              int dy[] = {0,1,-1,0,1,-1,1,-1};
              
              int main()
              
              {
              
                  int n,m;
              
                  cin >> n >> m;
              
                  for(int i = 0; i < n; i++)
              
                      cin >> a[i];
              
                  for(int i = 0; i < n; i++)
              
                  {
              
                      for(int j = 0; j < m; j++)
              
                      {
              
                          int num = 0;
              
                          if(a[i][j] == '*')
              
                              cout << "*";
              
                          else
              
                          {
              
                              for(int k = 0; k < 8; k++)
              
                              {
              
                                  int x = i + dx[k];
              
                                  int y = j + dy[k];
              
                                  if(x < 0 && y < 0 && x >= n && y >= m)
              
                                      continue;
              
                                  if(a[x][y] == '*')
              
                                      num++;
              
                              }
              
                              cout << num;
              
                          }
              
                      }
              
                      cout << endl;
              
                  }
              
              }
              
              • -1
                @ 2025-4-10 20:32:50

                #include <bits/stdc++.h> using namespace std; char a[105][105]; int n; int m; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] == '') { cout << ""; } else { int sum = 0; if (a[i - 1][j] == ''){ sum++; } if (a[i + 1][j] == ''){ sum++; } if (a[i][j - 1] == ''){ sum++; } if (a[i][j + 1] == ''){ sum++; } if (a[i - 1][j - 1] == ''){ sum++; } if (a[i - 1][j + 1] == ''){ sum++; } if (a[i + 1][j - 1] == ''){ sum++; } if (a[i + 1][j + 1] == ''){ sum++; } cout << sum; } } cout << endl; } return 0; }

                • -1
                  @ 2025-4-10 20:32:36

                  #include <bits/stdc++.h> using namespace std; char a[105][105]; int n; int m; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] == '') { cout << ""; } else { int sum = 0; if (a[i - 1][j] == ''){ sum++; } if (a[i + 1][j] == ''){ sum++; } if (a[i][j - 1] == ''){ sum++; } if (a[i][j + 1] == ''){ sum++; } if (a[i - 1][j - 1] == ''){ sum++; } if (a[i - 1][j + 1] == ''){ sum++; } if (a[i + 1][j - 1] == ''){ sum++; } if (a[i + 1][j + 1] == ''){ sum++; } cout << sum; } } cout << endl; } return 0; }

                  • -1
                    @ 2025-4-10 20:31:46

                    #include <bits/stdc++.h> using namespace std; char a[105][105]; int n; int m; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] == '') { cout << ""; } else { int sum = 0; if (a[i - 1][j] == ''){ sum++; } if (a[i + 1][j] == ''){ sum++; } if (a[i][j - 1] == ''){ sum++; } if (a[i][j + 1] == ''){ sum++; } if (a[i - 1][j - 1] == ''){ sum++; } if (a[i - 1][j + 1] == ''){ sum++; } if (a[i + 1][j - 1] == ''){ sum++; } if (a[i + 1][j + 1] == ''){ sum++; } cout << sum; } } cout << endl; } return 0; }

                    • -1
                      @ 2025-4-10 20:31:27

                      #include <bits/stdc++.h> using namespace std; char a[105][105]; int n; int m; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] == '') { cout << ""; } else { int sum = 0; if (a[i - 1][j] == ''){ sum++; } if (a[i + 1][j] == ''){ sum++; } if (a[i][j - 1] == ''){ sum++; } if (a[i][j + 1] == ''){ sum++; } if (a[i - 1][j - 1] == ''){ sum++; } if (a[i - 1][j + 1] == ''){ sum++; } if (a[i + 1][j - 1] == ''){ sum++; } if (a[i + 1][j + 1] == ''){ sum++; } cout << sum; } } cout << endl; } return 0; }

                      • -1
                        @ 2022-11-5 0:38:04

                        牛逼o( ̄▽ ̄)d

                        • -1
                          @ 2022-9-12 10:55:42
                          #include<iostream>
                          #include<string.h>
                          using namespace std;
                          int ans[105][105];
                          int main()
                          {
                          	int n,m;
                          	cin>>n>>m;
                          	for(int i=1;i<=n;i++)
                          	{
                          		for(int j=1;j<=m;j++)
                          		{
                          			char str;
                          			cin>>str;
                          			if(str=='*') ans[i][j]=1;
                          			else ans[i][j]=0;
                          		}
                          	}
                          	for(int i=1;i<=n;i++)
                          	{
                          		for(int j=1;j<=m;j++)
                          		{
                          			int sum=0;
                          			if(ans[i][j]==1) cout<<'*';
                          			else
                          			{
                          				if(ans[i][j+1]==1) sum++;
                          				if(ans[i][j-1]==1) sum++;
                          				if(ans[i-1][j]==1) sum++;
                          				if(ans[i+1][j]==1) sum++;
                          				if(ans[i+1][j+1]==1) sum++;
                          				if(ans[i+1][j-1]==1) sum++;
                          				if(ans[i-1][j+1]==1) sum++;
                          				if(ans[i-1][j-1]==1) sum++;
                          				cout<<sum;
                          			}
                          		}
                          		cout<<endl;
                          	}
                          	return 0;
                          }
                          
                          • -1
                            @ 2022-2-26 10:42:37
                            #include <math.h>
                            #include <stack>
                            #include <stdio.h>
                            #include <iostream>
                            #include <vector>
                            #include <iomanip>
                            #include <string.h>
                            #include <algorithm>
                            using namespace std;
                            #define LL long long
                            const int N = 1e5 + 10;
                            const int INF = 0x3f3f3f3f;
                            char a[110][110];
                            int dx[] = {1,1,1,-1,-1,-1,0,0};
                            int dy[] = {0,1,-1,0,1,-1,1,-1};
                            int main()
                            {
                                int n,m;
                                cin >> n >> m;
                                for(int i = 0; i < n; i++)
                                    cin >> a[i];
                                for(int i = 0; i < n; i++)
                                {
                                    for(int j = 0; j < m; j++)
                                    {
                                        int num = 0;
                                        if(a[i][j] == '*')
                                            cout << "*";
                                        else
                                        {
                                            for(int k = 0; k < 8; k++)
                                            {
                                                int x = i + dx[k];
                                                int y = j + dy[k];
                                                if(x < 0 || y < 0 || x >= n || y >= m)
                                                    continue;
                                                if(a[x][y] == '*')
                                                    num++;
                                            }
                                            cout << num;
                                        }
                                    }
                                    cout << endl;
                                }
                                return 0;
                            }
                            
                            • @ 2023-11-20 17:12:06

                              你和你楼下代码一样

                          • -1
                            @ 2022-1-25 10:22:51
                            #include <math.h>
                            #include <stack>
                            #include <stdio.h>
                            #include <iostream>
                            #include <vector>
                            #include <iomanip>
                            #include <string.h>
                            #include <algorithm>
                            using namespace std;
                            #define LL long long
                            const int N = 1e5 + 10;
                            const int INF = 0x3f3f3f3f;
                            char a[110][110];
                            int dx[] = {1,1,1,-1,-1,-1,0,0};
                            int dy[] = {0,1,-1,0,1,-1,1,-1};
                            int main()
                            {
                                int n,m;
                                cin >> n >> m;
                                for(int i = 0; i < n; i++)
                                    cin >> a[i];
                                for(int i = 0; i < n; i++)
                                {
                                    for(int j = 0; j < m; j++)
                                    {
                                        int num = 0;
                                        if(a[i][j] == '*')
                                            cout << "*";
                                        else
                                        {
                                            for(int k = 0; k < 8; k++)
                                            {
                                                int x = i + dx[k];
                                                int y = j + dy[k];
                                                if(x < 0 || y < 0 || x >= n || y >= m)
                                                    continue;
                                                if(a[x][y] == '*')
                                                    num++;
                                            }
                                            cout << num;
                                        }
                                    }
                                    cout << endl;
                                }
                                return 0;
                            }```
                            • -4
                              @ 2023-11-27 17:50:49

                              不知道

                            • 1

                            信息

                            ID
                            749
                            时间
                            1000ms
                            内存
                            256MiB
                            难度
                            5
                            标签
                            递交数
                            492
                            已通过
                            203
                            上传者