蒟蒻TLE求助
查看原帖
蒟蒻TLE求助
195331
Mine_KingCattleya楼主2020/11/25 19:36

RT,TLE#16,但是我的代码是O(n^2)的啊,为什么会挂/kk
求大佬帮忙看看,核心代码只有十几行/kel

#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#define false 0
#define true 1
using namespace std;
int n,m;
vector<vector<int> >a,f;
bool dfs(int x,int y)
{
	if(x==n&&y==m) return true;
	if(a[x][y]==false||f[x][y]==true) return false;
	if(x!=1||y!=1) f[x][y]=true;
	if(dfs(x+1,y)) return true;
	if(dfs(x,y+1)) return true;
	f[x][y]=false;
	return false;
}
int main()
{
	//freopen("qaq.out","r",stdin);
	scanf("%d%d",&n,&m);
	a.resize(n+5);
	f.resize(n+5);
	for(int i=0;i<(int)a.size();i++)
	{
		a[i].resize(m+5);
		f[i].resize(m+5);
		for(int j=0;j<(int)a[i].size();j++) a[i][j]=f[i][j]=false;
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			char c=getchar();
			while(c!='.'&&c!='#') c=getchar();
			if(c=='.') a[i][j]=true;
		}
	if(!dfs(1,1)) puts("0");
	else if(!dfs(1,1)) puts("1");
	else puts("2");
	return 0;
}

2020/11/25 19:36
加载中...