15 条题解

  • 3
    @ 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;
    }
    
    • 1
      @ 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;
      
      }
      

      }

      • 1
        @ 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
          @ 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; }

          • 0
            @ 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; }

            • 0
              @ 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; }

              • 0
                @ 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; }

                • 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
                    @ 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;
                        }```
                        • -2
                          @ 2023-11-27 17:50:49

                          不知道

                        • 1

                        信息

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