11 条题解

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

            不知道

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

                信息

                ID
                749
                时间
                1000ms
                内存
                256MiB
                难度
                4
                标签
                递交数
                358
                已通过
                157
                上传者