使山递推求改
查看原帖
使山递推求改
1472013
darrenjiang20241楼主2025/7/25 14:24

1,4,5,6测试点wa,2,3,7,8,9,10re,求调

#include<iostream>
#include<bits/stdc++.h> 
using namespace std;
int di,dx[4]={0,1,0,-1};
int dy[4]={-1,0,1,0};
bool vis[105][105];
int a[105][105],n,I,J;
void dfs(int di,int o,int p,int step){
	bool is_empty=false;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(!vis[i][j]){
				is_empty=true;
				break;
			} 
		} 
	}
	if(is_empty) return;
	
	int xx=dx[di]+o,yy=dy[di]+p;
	if(!vis[xx][yy]&&xx>=0&&xx<n&&yy>=0&&yy<n) di=di;
	else if(vis[xx][yy]&&xx>=0&&xx<n&&yy>=0&&yy<n) ++di;
	else if(!(xx>=0&&xx<n&&yy>=0&&yy<n)) ++di;
	xx=dx[di]+o,yy=dy[di]+p,step++,a[xx][yy]=step;
	dfs(di,xx,yy,step);
}
int main(){
	cin>>n>>I>>J;
	a[0][0]=1;
	vis[0][0]=true;
	dfs(2,0,0,1);
	cout<<a[I][J];
	return 0;
}
2025/7/25 14:24
加载中...