C39-扫雷
原题链接:28705.NoteSC++2025-01-12 14:30:38
发布于:江苏
一、作业回顾
给你一个正整数 n,你需要将这个数字中为 2 的数字替换为 8, 把 8替换成2。
数据范围: 1≤n≤10^9
输入格式: 输入一个整数代表 n。
输出格式: 输出一个转化后的整数。
样例组
输入#1
12345678
输出#1
18345672
提示:字符串的基本操作
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string s;
cin >> s;
for (int i=0; i<s.size(); i++)
{
if (s[i] == '2') cout << '8';
else if (s[i] == '8') cout << '2';
else cout << s[i];
}
return 0;
}
二、扫雷案例
#include <iostream>
using namespace std;
char s[105][105];
int n, m;
int main(){
cin >> n >> m;
//输入地雷格
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
cin >> s[i][j];
for (int i=1; i<=n; i++){
for (int j=1; j<=m; j++){
if (s[i][j] == '*'){
cout << s[i][j]; //(1)直接输出地雷
}
else{//遍历一圈8个方向统计地雷的数量, 再输出
int cnt = 0;
for (int p=i-1; p<=i+1; p++){
for (int q=j-1; q<=j+1; q++){
if (s[p][q] == '*') cnt++;
}
}
cout << cnt;
}
}
cout<<endl;
}
return 0;
}
三、桶思想练习
题目链接:A318.字母统计
桶思想的运用,只不过下标是字符,本质上还是ASCII码,注意数组的范围。
#include<iostream>
using namespace std;
string s;
int b[200] = {};
int main(){
cin >> s;
for (int i=0; i<s.size(); i++){
//将s[i]当做下标存入"桶"里, 次数 +1
b[ s[i] ] ++;
}
for (char i='a'; i<='z'; i++){
if (b[i]){
printf("%c:%d\n", i, b[i]);
}
}
return 0;
}
这里空空如也
有帮助,赞一个