深搜为什么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;
}