1、扫雷
#include <bits/stdc++.h>
using namespace std;
int n,m;
const int N=110;
int g[N][N];
int dx[8]={-1,-1,-1,0,1,1,1,0};
int dy[8]={-1,0,1,1,1,0,-1,-1};
int dfs(int x,int y){
int ans=0;
for(int i=0;i<8;i++){
int a=x+dx[i],b=y+dy[i];
if(a<0||a>n-1||b<0||b>m-1||g[a][b]==0)continue;
else if(g[a][b]==9)ans++;
}
return ans;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>g[i][j];
if(g[i][j]==1){
g[i][j]=9;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(!g[i][j]){
g[i][j]=dfs(i,j);
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<g[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
2、九进制转十进制
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s = "2022";
int ans = 0;
for(int i=0;i<s.length();i++){
ans = ans*9+s[i]-'0';
}
cout << ans << endl;
return 0;
}
3、顺子日期
#include <iostream>
using namespace std;
//2022年二月28天
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int q[]){
for(int i=3;i<=5;i++)//顺子头最低从3开始,5结束
if(q[i]==(q[i+1]-1)&&q[i+1]==(q[i+2]-1)){
return true;
}
return false;
}
int main()
{
int q[8]={2,0,2,2};
int res=0;
for(int i=1;i<=12;i++){
q[4]=i/10%10;//得月份第一位
q[5]=i%10;//第二位
for(int j=1;j<=day[i];j++){
q[6]=j/10%10;
q[7]=j%10;
if(check(q)){
res++;
}
}
}
cout<<res;
return 0;
}
4、刷题统计
#include <iostream>
using namespace std;
typedef long long ll;//数据范围很大用longlong
ll a,b,n,add,day;
int main()
{
cin>>a>>b>>n;
int tem=5*a+2*b;//一个周期刷的数量
ll week=n/tem;//需要得周数
ll last=n%tem;//剩余的题目数
day+=week*7;//先加上
int x=1;
while(last>0)//全部减完即为答案
{
if(x%7==6||x%7==0)last-=b;//周末
else last-=a;//周一到五
day++;
x++;
}
cout<<day<<endl;
return 0;
}
5、修剪灌木
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cout<<max(i-1,n-i)*2<<endl;
}
return 0;
}