竞赛
考级
大佬求解
用户18246798459712
༺ཌༀ༒Maximus༒ༀད༻
没错你没看错,这就是第十个测试数据
颜新珉
for套两层 直接9个if判断周围格子是否有地雷
mzx
TYny_
斜角悲第3冠
n, m = map(int, input().split()) grid = [list(input().strip()) for _ in range(n)] 八个方向的偏移量 directions = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] result = [[0 for _ in range(m)] for _ in range(n)] for i in range(n): for j in range(m): if grid[i][j] == '': result[i][j] = '' continue for row in result: print(''.join(row))
无语是自闭
找不到了
我的世界老玩家(互关,专攻难题)
二分答案 1、确定单调性/二段性 二段性题目:找分界点 2、二分模板 int l=答案可能的最小值, r=答案可能的最大值; int ans=0; while(l<=r){ int mid=(l+r)/2; if(check(mid)){ ans=mid; // 求最大值 l=mid+1; // 求最小值 r=mid-1; } else{ // 求最大值 r=mid-1; // 求最小值 l=mid+1; } } 3、check 函数 具体问题具体分析 需要检查当前二分的答案是否符合题目要求 明确所有变量代表的意义 最后和什么比? 题目中的某一个定值 4、如何提升自己二分答案的能力
秋的门徒
二分查找 时间复杂度 O(logn) 前提: 数组是 有序的 1、二分模板 // 确定左右端点(二分范围) int l = 左端点,r = 右端点; int ans = 初始化; while(l<=r){ // 1、找中间值 int mid=(l+r)/2; // 2、比较查找到中间元素和目标元素的大小 if( ){ // 符合条件的情况 ans=mid; // 答案更新为 mid // 缩小范围 画图!判断缩小左边界还是右边界 // l=mid+1; r=mid-1; } else{ // 缩小范围 和上一个反过来 // r=mid-1; l=mid+1; } } 3、lower_bound 和 upper_bound
#include <bits/stdc++.h> using namespace std; string a[105][105]; int main(){ long long n,m; cin>>n>>m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } long long h=0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a[i][j]"?"){ if(a[i-1][j]""){ h++; } if(a[i+1][j]==""){ h++; } if(a[i-1][j-1]"*"){ h++; } if(a[i-1][j]""){ h++; } if(a[i-1][j+1]==""){ h++; } if(a[i+1][j-1]"*"){ h++; } if(a[i+1][j]""){ h++; } if(a[i+1][j+1]==""){ h++; } cout<<h; }else if(a[i][j]==""){ cout<<""; } h=0; } cout<<endl; } return 0; }
路中凤
提交答案之后,这里将显示提交结果~