求助
查看原帖
求助
227723
syysongyuyang楼主2021/11/7 10:27

蒟蒻CSP-J 2021 T1,T4爆零

复习深搜结果20分

求助

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
using namespace std;
const int N=55;
int n,m,t;
int sx,sy,ex,ey;
int zx,zy;
int vis[N][N];
int cs[N][N];
int a[N][N];
int sum=0;
int dx[5]={1,-1,0,0};
int dy[5]={0,0,1,-1};
void dfs(int sx,int sy)
{
	if (sx==n && sy==m)
	{
		sum++;
		return;
	}
	for (int i=0;i<4;i++)
	{
		int tx=sx;
		int ty=sy;
		tx+=dx[i];
		ty+=dy[i];
		if (tx>0 && tx<=n && ty>0 &&ty<=m && vis[tx][ty]==0 && a[tx][ty]==0 && cs[tx][ty]<2)
		{
			cs[tx][ty]++;
			vis[tx][ty]=1;
			dfs(tx,ty);
			vis[tx][ty]=0;
		}
	}
}
int main()
{
	ios::sync_with_stdio(false);
	memset(a,0,sizeof(a));
	memset(vis,0,sizeof(vis));
	memset(cs,0,sizeof(cs));
	vis[sx][sy]=1;
	cin>>n>>m>>t;
	cin>>sx>>sy>>ex>>ey;
	for (int i=1;i<=t;i++)
	{
		cin>>zx>>zy;
		a[zx][zy]=1;
	}
//	for (int i=1;i<=m;i++)//输出迷宫,自己调的时候搞的
//	{
//		for (int j=1;j<=n;j++)
//			cout<<a[i][j];
//		cout<<endl;
//	}		
	dfs(sx,sy);
	cout<<sum;
	return 0;
}
2021/11/7 10:27
加载中...