求问:此代码为何会无限循环
  • 板块灌水区
  • 楼主duanfeitong
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/4/30 19:42
  • 上次更新2023/10/23 17:06:43
查看原帖
求问:此代码为何会无限循环
705498
duanfeitong楼主2023/4/30 19:42
#include<bits/stdc++.h>
#define max(xx,yy) ((xx>yy)?xx:yy) 
using namespace std;
int m[4][2005],n;
bool vis[4][2005];
long long ans;
const int dx[3]={1,-1,0};
const int dy[3]={0,0,1};
void dfs(int x,int y,int sum)
{
	cout<<x<<' '<<y<<' '<<sum<<'\n';
	if(x==3)
	{
		ans=max(ans,sum);
		if(y!=0&&!vis[3][y-1]) vis[3][y]=true,dfs(3,y-1,sum+m[3][y-1]),vis[3][y]=false;
		if(y!=n-1&&!vis[3][y+1]) vis[3][y]=true,dfs(3,y+1,sum+m[3][y+1]),vis[3][y]=false;
		return;
	}
	else
	{
		for(int kkk=0;kkk<3;kkk++)
		{
			if(y+dy[kkk]>=0&&y+dy[kkk]<n&&x+dx[kkk]<=3&&!vis[x+dx[kkk]][y+dy[kkk]])
				vis[x][y]=true,dfs(x+dx[kkk],y+dy[kkk],sum+m[x+dx[kkk]][y+dy[kkk]]),vis[x][y]=false;
		}
	}
}
int main()
{
	ios::sync_with_stdio(0),cin.tie(),cout.tie();
	cin>>n;
	for(int i=1;i<=3;i++)
		for(int j=0;j<n;j++)
			cin>>m[i][j];
	for(int i=0;i<n;i++)
	{
		//memset(dp,0,sizeof(dp));
		dfs(1,i,m[1][i]);
	}
	cout<<ans<<'\n';
	return 0;
}
2023/4/30 19:42
加载中...