问题求助
  • 板块学术版
  • 楼主刘辰雨
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/12/18 23:07
  • 上次更新2023/10/28 14:07:54
查看原帖
问题求助
524906
刘辰雨楼主2021/12/18 23:07

深搜为什么RE?

#include<bits/stdc++.h>
using namespace std;
long long ans;
long long n , k;
struct hh
{
	long long x , y , s ;
	string f;
};
int main()
{
long long t;
	cin>>t;
	while(t > 0)
	{
		char a[1001][1001];
		queue<hh>dfs;
		ans = 0;
		cin>>n>>k;
		for(int i = 1 ; i<= n ; i++)
		{
			for(int j = 1 ; j<= n ; j++)
			{
				cin>>a[i][j]; 
			}
		}
		hh u;
		u.x = 1;
		u.y = 1;
		u.s = 0;
		u.f = "/";
		dfs.push(u);
		while(!dfs.empty())
		{
			u = dfs.front();
			if(u.x == 1 && u.y == 1)
			{
				hh v;
				if(a[u.x+1][u.y] != 'H' && u.x+1 <= n && u.y <= n)
				{
					v.x = u.x + 1;
					v.y = u.y;
					v.s = u.s;
					v.f = "right";
					dfs.push(v);
				}
				if(a[u.x][u.y+1] != 'H' && u.x <= n && u.y+1 <= n)
				{
					v.x = u.x;
					v.y = u.y + 1;
					v.s = u.s;
					v.f = "down";
					dfs.push(v);
				}
			}
			else if(u.x <= n && u.y <= n) 
			{
				hh v;
				if(a[u.x+1][u.y] != 'H'&& u.x+1 <= n && u.y <= n)
				{
					v.x = u.x + 1;
					v.y = u.y;
					if(u.f == "down")v.s = u.s+1;
					else v.s = u.s;
					v.f = "right";
					dfs.push(v);
				}
				if(a[u.x][u.y+1] != 'H' && u.x <= n && u.y+1 <= n)
				{
					v.x = u.x;
					v.y = u.y + 1;
					if(u.f == "right")v.s = u.s+1;
					else v.s = u.s;
					v.f = "down";
					dfs.push(v);
				}
			}
			if(u.x == n && u.y == n && u.s <= k)ans++;
			dfs.pop();
			
		}
		cout<<ans<<endl;
		t--;
	}
	return 0;	
} 
2021/12/18 23:07
加载中...