编译错误,不太清楚什么是‘int[int]’用作数组下标类型无效
查看原帖
编译错误,不太清楚什么是‘int[int]’用作数组下标类型无效
1038005
m_jing_x楼主2024/3/9 19:54
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
int n,m;
const int N = 2e3+7;
bool vis[N];
int f[N];
int sx[]={0,-1,0,1},sy[]={-1,0,1,0};
string road[N];
int sum,mn=N*N+7;
int idx=1,q;
void dfs(int x,int y)
{
	if(x<=n&&y<=m)
	{
		bool flag=1;
		for(int i=0;i<4;i++)
		{
			if(x==n&&y==m)
			{
				if(mn>sum)
				{
					mn=sum;
					q=idx;
					idx++;
				}
				return;
			}
			int dx=x+sx[i],dy=y+sy[i];
			if(f[dx][dy]!=f[x][y]&&vis[dx][dy]&&dx<=n&&dy<=m)
			{
				if (i==0)
				{
					road[idx]+="U";
				}
				else if (i==1)
				{
					road[idx]+="D";
				}
				else if (i==2)
				{
					road[idx]+="L";
				}
				else
				{
					road[idx]+="R";
				}
				flag=0;
				vis[dx][dy]=1;
				sum++;
				dfs(dx,dy);
				sum--;
				vis[dx][dy]=0;
			}
		}
		if(flag)
		{
			return;
		}
	}
}
int main(void)
{
	cin>>t;
	while(t--)
	{
		cin>>n>>m;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
                char ch;
                cin>>ch;
				f[i][j]=ch-'0';
			}
		}
		cout<<mn<<endl;
		if(mn!=N*N+7)
		{
			for(int i=1;i<=road[q].length()+1;i++)
			{
				cout<<road[q][i];
			}
			cout<<endl;
		}
	}
	return 0;
} 
2024/3/9 19:54
加载中...