题目戳我
本题开字符串数组肯定开不出二维的,所以考虑开一个vector数组存,1表示.,0表示#,然后就是dfs了,因为是其他点到边界,然后如果我们枚举其他点到边界的话绝对要超时,所以要转变思想。从边界枚举出去,然后如果这个点可达那么他的ve[x][y]++;这样时间复杂度就降下来了,但是还是不够的,那么现在就要减枝叶了,如果ve[x][y]>1的话说明已经有边界可达了,那么就直接return ,如果该点是#也就是说ve[x][y]==0,那么也return ;
在这里插入代码片#include<iostream>#include<stdio.h>#include<math.h>#include<string.h>#include<string>#include<vector>#include<queue>#include<algorithm>#include<deque>#include<map>#include<stdlib.h>#include<t>#include<iomanip>#include<stack>#define ll long long#define ms(a,b) memt(a,b,sizeof(a))#define lowbit(x) x & -x#define fi first#define ull unsigned long long#define cond#define endl "\n处暑节气的含义是什么意思"#define bug cout<<"----acac----"<<endl#define IOS ios::sync_with_stdio(fal), cin.tie(0),cout.tie(0)using namespace std;const int maxn =1e6+10;const int maxm = 1.5e5+50;const double eps = 1e-18;const double inf = 0x3f3f3f3f;const double lnf = 0x3f3f3f3f3f3f3f3f;const int mod = 1e9+7;const double pi=3.141592653589;vector<int>ve[maxn];char s[maxn]; int n,m;int dir[][2]={{-1,0},{1,0},济南 旅游{0,-1},{0,1}};bool check(int i,int j){ if(i==0||j==0||i==n-1||j==m-1)return true; el return fal;}void dfs(int x,int y){ if(ve[x][y]==0||ve[x][y]>1)return ; ve[x][y]++; for(int i=0;i<4;i补办身份证++) { int dx=x+dir[i][0]; int dy=y+dir[i][1]; if(dx<0||dy<0||dx>=n||dy>=m)continue; dfs(dx,dy); }}int main(){ scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { //bug; scanf("%s",s+1); for(int j=1;j<=m;j++) { if(s[j]=='.') { ve[i].push_back(1); } el { ve[i].pu金明灿sh_back(0); } } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(check(i,j)&&ve[i][j])dfs(i,j); } }//-----bug; int ans=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(ve[i][j]>1)ans++; } } printf("%d\n",n*m-ans); return 0;打字录入员}
本文地址:https://blog.csdn.net/qcccc_/article/details/107945494
本文发布于:2023-04-04 02:53:13,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/e99228f83023337f1212d26f65f73ef3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:E 地、颜色、魔法.doc
本文 PDF 下载地址:E 地、颜色、魔法.pdf
留言与评论(共有 0 条评论) |