7 solutions
-
3
题意
给出一张地雷图,写出每个格子八面的地雷数量
思路
思路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
超简短且简洁代码(可直接食用)
#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
#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
#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
#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
#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