10分求助
查看原帖
10分求助
285617
黑影洞人楼主2021/8/5 11:21
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 35
using namespace std;
int n,m,T,dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},vis[N][N];
double ans;
char a[N][N];
bool isg(int x,int y,int ex,int ey){
	if(x==ex&&y==ey)return 1;
	bool ans=0;
	vis[x][y]=1;
	for(int i=0;i<4;i++){
		int xx=x+dx[i],yy=y+dy[i];
		if(a[xx][yy]=='1'||vis[xx][yy]==1||xx>=n||xx<0||yy>=m||yy<0)continue;
		ans=max(ans,isg(xx,yy,ex,ey));
		if(ans){
			vis[x][y]=0;
			return ans;
		}
	}
	vis[x][y]=0;
	return ans;
}
int main(){
	scanf("%d%d%d",&n,&m,&T);
	for(int i=0;i<n;i++)scanf("%s",a[i]);
	if(T==0){
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				for(int k=i+1;k<n;k++){
					for(int t=j+1;t<m;t++){
						if(j==t||i==k)continue;
						if(a[i][j]=='0'&&a[k][t]=='0'&&isg(i,j,k,t)){
							ans=max(ans,sqrt((i-k)*(i-k)+(j-t)*(j-t)));
						}
					}
				}
			}
		}
	}
	else ans=2.828427;
	printf("%.6lf",ans);
	return 0;
}


2021/8/5 11:21
加载中...