AcWing 1929. 镜子田地 dfs+异或+反证
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 1929. 镜子田地 dfs+异或+反证相关的知识,希望对你有一定的参考价值。
参考和讲解:
AcWing 1929. 镜子田地 -> 图示方向改变
AcWing 1929. 镜子田地 简洁代码 + 证明
#include<bits/stdc++.h>
using namespace std;
#define fir(i,a,n) for(int i=a;i<=n;i++)
#define mem(a,x) memset(a,x,sizeof(a));
#define pb push_back
#define INF 0x3f3f3f3f
#define pii pair<int,int>
#define fi first
#define se second
typedef long long ll;
const int N=1e3+10;
int n,m;
int g[N][N];
int ans;
int v[N][N];
//0 1 2 3 上 右 下 左
int dx[4]=-1,0,1,0;
int dy[4]=0,1,0,-1;
void dfs(int x,int y,int sum,int now)
ans=max(ans,sum);
now=now^g[x][y];
int xx=x+dx[now],yy=y+dy[now];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m)
dfs(xx,yy,sum+1,now);
int main()
cin>>n>>m;
fir(i,1,n)
fir(j,1,m)
char ch;int t;cin>>ch;
if(ch=='/') t=1;
else t=3;
g[i][j]=t;
ans=0;
for(int i=1;i<=n;i++)
dfs(i,1,1,1);
dfs(i,m,1,3);
for(int j=1;j<=m;j++)
dfs(1,j,1,2);
dfs(n,j,1,0);
cout<<ans;
return 0;
以上是关于AcWing 1929. 镜子田地 dfs+异或+反证的主要内容,如果未能解决你的问题,请参考以下文章