7 solutions

  • 3
    @ 2024-1-29 15:24:54

    题意

    给出一张地雷图,写出每个格子八面的地雷数量

    思路

    思路1

    遍历每个格子,找每个格子周围八面有多少个地雷

    思路2

    输入时遇到地雷,把它周围八面格子的地雷数加 1

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int a[105][105];
    int x[] = {-1,1,0,0,-1,-1,1,1},y[] = {0,0,-1,1,-1,1,-1,1};
    void check(int cx,int cy){
    	for (int i = 0;i < 8;i++){	// 八面的格子
    		if(a[cx + x[i]][cy + y[i]] != -1)	a[cx + x[i]][cy + y[i]]++;
    	}
    }
    int main(int argc, char **argv){
    	int n,m;
    	cin >> n >> m;
    	for (int i = 1;i <= n;i++){
    		for (int j = 1;j <= m;j++){
    			char c;
    			cin >> c;
    			if (c == '*'){	// 如果是地雷
    				a[i][j] = -1;
    				check(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 << '\n';
    	}
    	return 0;
    }#include <bits/stdc++.h>
    using namespace std;
    int a[105][105];
    int x[] = {-1,1,0,0,-1,-1,1,1},y[] = {0,0,-1,1,-1,1,-1,1};
    void check(int cx,int cy){
    	for (int i = 0;i < 8;i++){
    		if(a[cx + x[i]][cy + y[i]] != -1)	a[cx + x[i]][cy + y[i]]++;
    	}
    }
    int main(int argc, char **argv){
    	int n,m;
    	cin >> n >> m;
    	for (int i = 1;i <= n;i++){
    		for (int j = 1;j <= m;j++){
    			char c;
    			cin >> c;
    			if (c == '*'){
    				a[i][j] = -1;
    				check(i,j);
    			}
    		}
    	}
    	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 << '\n';
    	}
    	return 0;
    }
    
    • 1
      @ 2025-3-4 13:57:17

      超简短且简洁代码(可直接食用)

      #include<bits/stdc++.h>
      using namespace std;
      int sum[105][105],n,m;
      bool p[105][105];
      char x;
      int main(){
      	cin>>n>>m;
      	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
      		cin>>x;
      		if(x=='*')p[i][j]=true;
      	}
      	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int ii=i-1;ii<=i+1;ii++)for(int jj=j-1;jj<=j+1;jj++)sum[i][j]+=p[ii][jj];
      	for(int i=1;i<=n;i++){
      		for(int j=1;j<=m;j++){
      			if(p[i][j])cout<<"*";
      			else cout<<sum[i][j];
      		}
      		cout<<endl;
      	}
      	return 0;
      }
      
      • 0
        @ 2024-12-13 19:29:21
        #include <bits/stdc++.h>
        using namespace std;
        int n, m;
        char a[105][105];
        int b[105][105];
        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] == '*')
        			{
        				if(a[i-1][j] == '?')
        				{
        					b[i-1][j]++;
        				}
        				if(a[i+1][j] == '?')
        				{
        					b[i+1][j]++;
        				}
        				if(a[i][j-1] == '?')
        				{
        					b[i][j-1]++;
        				}
        				if(a[i][j+1] == '?')
        				{
        					b[i][j+1]++;
        				}
        				if(a[i-1][j-1] == '?')
        				{
        					b[i-1][j-1]++;
        				}
        				if(a[i-1][j+1] == '?')
        				{
        					b[i-1][j+1]++;
        				}
        				if(a[i+1][j-1] == '?')
        				{
        					b[i+1][j-1]++;
        				}
        				if(a[i+1][j+1] == '?')
        				{
        					b[i+1][j+1]++;
        				}
        			}
        		}
        	}
        	for(int i = 1; i <= n; i++)
        	{
        		for(int j = 1; j <= m; j++)
        		{
        			if(a[i][j] == '*')
        			{
        				cout << a[i][j];
        			}
        			else
        			{
        				cout << b[i][j];		
        			}
        
        		}
        		cout << endl;
        	}
        	
        	return 0;
         } 
        
        • 0
          @ 2024-1-31 0:23:00
          #include <iostream>
          using namespace std;
          char A[105][105];
          int B[105][105];
          int n;
          int m;
          int i;
          int j;
          int main(){
          	cin>>n>>m;
          	for(i=1;i<105;i++){
          		for(j=1;j<105;j++){
          			B[i][j]=0;
          		}
          	}
          	for(i=1;i<=n;i++){
          		for(j=1;j<=m;j++){
          			cin>>A[i][j];
          			if(A[i][j]=='*'){
          				B[i+1][j+1]++;
          				B[i+1][j-1]++;
          				B[i+1][j]++;
          				B[i][j+1]++;
          				B[i][j-1]++;
          				B[i-1][j]++;
          				B[i-1][j+1]++;
          				B[i-1][j-1]++;
          			}
          		}
          	}
          	for(i=1;i<=n;i++){
          		for(j=1;j<=m;j++){
          			if(A[i][j]=='*'){
          				cout<<"*";
          			}
          			else{
          				cout<<B[i][j];
          			}
          		}
          		cout<<endl;
          	}
          	return 0;
          }
          
          • 0
            @ 2024-1-27 11:23:26
            #include<bits/stdc++.h>
            using namespace std;
            int n,m;
            char a[105][105];
            char s[105][105];
            int main(){
            	cin>>n>>m;
            	for(int i=0;i<n;i++){
            		fill(s[i],s[i]+105,'0');
            	}
            	for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j];
            	for(int i=0;i<n;i++){
            		for(int j=0;j<m;j++){
            			if(a[i][j]=='*'){
            				if(i-1>=0&&s[i-1][j]!='*')s[i-1][j]++;
            				if(i-1>=0&&j-1>=0&&s[i-1][j-1]!='*')s[i-1][j-1]++;
            				if(i-1>=0&&j+1<n&&s[i-1][j+1]!='*')s[i-1][j+1]++;
            				if(j-1>=0&&s[i][j-1]!='*')s[i][j-1]++;
            				if(j+1<n&&s[i][j+1]!='*')s[i][j+1]++;
            				if(i+1<n&&s[i+1][j]!='*')s[i+1][j]++;
            				if(i+1<n&&j-1>=0&&s[i+1][j-1]!='*')s[i+1][j-1]++;
            				if(i+1<n&&j+1<n&&s[i+1][j+1]!='*')s[i+1][j+1]++;
            				s[i][j]='*';
            			}
            		}
            	}
            	for(int i=0;i<n;i++){
            		for(int j=0;j<m;j++) cout<<s[i][j];
            		cout<<endl;
            	}
            	return 0;
            }
            

            看上去不太water的water(我数组越界死活看不出来

            • -1
              @ 2024-12-11 13:24:54

              %c按字符从输入缓冲区读取数据,再次读取会读到换行符qwq

              #include<cstdio>
              
              char temp;
              
              int main()
              {
              	scanf("%c",&temp);
              	putchar(temp);
              	scanf("%c",&temp);
              	return 0;
              }
              
              • -1
                @ 2024-1-27 10:17:49
                #include <set>
                #include <ios>
                #include <list>
                #include <cmath>
                #include <ctime>
                #include <queue>
                #include <deque>
                #include <stack>
                #include <vector>
                #include <bitset>
                #include <cctype>
                #include <cerrno>
                #include <cwchar>
                #include <cstdio>
                #include <fenv.h>
                #include <iosfwd>
                #include <string>
                #include <limits>
                #include <math.h>
                #include <cstdlib>
                #include <iomanip>
                #include <clocale>
                #include <complex>
                #include <cstring>
                #include <cstring>
                #include <cwctype>
                #include <istream>
                #include <ostream>
                #include <sstream>
                #include <fstream>
                #include <utility>
                #include <stdio.h>
                #include <iostream>
                #include <stdint.h>
                #include <string.h>
                #include <tgmath.h>
                #include <complex.h>
                #include <algorithm>
                #include <exception>
                #include <stdbool.h>
                #include <stdexcept>
                #include <streambuf>
                #include <functional>
                #include <inttypes.h>
                #include <bits/stdc++.h>
                using namespace std;
                char a[105][105];
                char c[105][105];
                int main(){
                	int n,m;
                	cin >> n >> m;
                	for(int i = 1;i <= n;i++){
                		for(int j = 1;j <= m;j++){
                			cin >> a[i][j];
                			if(a[i][j] == '?') c[i][j] = '0';
                			else c[i][j] = '*';
                		}
                	}
                	for(int i = 1;i <= n;i++){
                		for(int j = 1;j <= m;j++){
                			if(c[i][j] == '*'){
                				if(c[i - 1][j - 1] != '*') c[i - 1][j - 1] += 1;
                				if(c[i - 1][j] != '*') c[i - 1][j] += 1;
                				if(c[i - 1][j + 1] != '*') c[i - 1][j + 1] += 1;
                				if(c[i][j - 1] != '*') c[i][j - 1] += 1;
                				if(c[i][j + 1] != '*') c[i][j + 1] += 1;
                				if(c[i + 1][j - 1] != '*') c[i + 1][j - 1] += 1;
                				if(c[i + 1][j] != '*') c[i + 1][j] += 1;
                				if(c[i + 1][j + 1] != '*') c[i + 1][j + 1] += 1;
                			} 
                			
                		}
                	}
                	for(int i = 1;i <= n;i++){
                		for(int j = 1;j <= m;j++){
                			cout << c[i][j];
                		}
                        cout << endl;
                	}
                	return 0;
                }
                
                • 1

                Information

                ID
                980
                Time
                1000ms
                Memory
                125MiB
                Difficulty
                6
                Tags
                # Submissions
                119
                Accepted
                39
                Uploaded By