2021.8.14提高B组模拟6T4 + P7555 [USACO21OPEN] Maze Tac Toe (dfs)
Posted SSL_LKJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.8.14提高B组模拟6T4 + P7555 [USACO21OPEN] Maze Tac Toe (dfs)相关的知识,希望对你有一定的参考价值。
Maze Tac Toe
解题思路
暴力dfs
存储编号
AC代码
#include<iostream>
#include<cstdio>
using namespace std;
struct node
int num,x,y;
map[30][30];
int n,ans,px,py,b[20005],f[5][5],c[30][30][20005];
int dx[4]=0,0,1,-1;
int dy[4]=1,-1,0,0;
string s;
int getsum()//求编号
int sum=0;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
sum=sum*3+f[i][j];
return sum;
bool pd()//判断是否可行
for(int i=1;i<=3;i++)
if(f[i][1]==2&&f[i][2]==1&&f[i][3]==1)return true;
if(f[i][1]==1&&f[i][2]==1&&f[i][3]==2)return true;
if(f[1][i]==2&&f[2][i]==1&&f[3][i]==1)return true;
if(f[1][i]==1&&f[2][i]==1&&f[3][i]==2)return true;
if(f[1][1]==2&&f[2][2]==1&&f[3][3]==1)return true;
if(f[1][1]==1&&f[2][2]==1&&f[3][3]==2)return true;
if(f[1][3]==2&&f[2][2]==1&&f[3][1]==1)return true;
if(f[1][3]==1&&f[2][2]==1&&f[3][1]==2)return true;
return false;
bool check(int x,int y)//判断
if(x>=1&&x<=n&&y>=1&&y<=n)return true;
return false;
void dfs(int x,int y)
int z=getsum();//求z
if(c[x][y][z])return;//记忆化
c[x][y][z]=1;
if(!b[z])
if(pd())
b[z]=1;
ans++;
return;
else return;
for(int i=0;i<4;i++)
int xx=dx[i]+x,yy=dy[i]+y;
if(check(xx,yy))
if(map[xx][yy].num!=0)
int ox=map[xx][yy].x,oy=map[xx][yy].y;
int last=f[ox][oy];//存储
if(map[xx][yy].num!=1)
if(!f[ox][oy])f[ox][oy]=map[xx][yy].num-1;
dfs(xx,yy);//dfs
f[ox][oy]=last;
return;
int main()
scanf("%d",&n);
for(int i=1;i<=n;i++)//将图缩小
cin>>s;
for(int j=0;j<3*n;j+=3)
if(s[j]!='#')
if(s[j]=='O')map[i][j/3+1]=(node)2,s[j+1]-48,s[j+2]-48;
else
if(s[j]=='M')map[i][j/3+1]=(node)3,s[j+1]-48,s[j+2]-48;
else
if(s[j]=='B')px=i,py=j/3+1,map[i][j/3+1].num=1;
else map[i][j/3+1].num=1;
dfs(px,py);
printf("%d",ans);
return 0;
谢谢
以上是关于2021.8.14提高B组模拟6T4 + P7555 [USACO21OPEN] Maze Tac Toe (dfs)的主要内容,如果未能解决你的问题,请参考以下文章
2021.8.14提高B组模拟6T2 + P7557 [USACO21OPEN] Acowdemia (二分)
2021.8.14提高B组模拟6T2 + P7557 [USACO21OPEN] Acowdemia (二分)
2021.8.14提高B组模拟6T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)
2021.8.14提高B组模拟6T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)