栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1142 Maze

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1142 Maze

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <map>#include <stack>#include <vector>#include <set>#include <queue>#pragma comment (linker,"/STACK:102400000,102400000")#define maxn 305#define MAXN 200005#define mod 1000000007#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-6typedef long long ll;using namespace std;int n,m,k,cnt,flag;double ans,tot;bool mp[maxn][maxn];bool vis[maxn][maxn];double val[maxn][maxn];int dx[]= {-1,1,0,0};int dy[]= {0,0,-1,1};char s[maxn];void show(){    int i,j,t;    for(i=1; i<=3*n; i++)    {        for(j=1; j<=3*m; j++)        { printf("%d",mp[i][j]);        }        printf("n");    }}void dfs(int x,int y){    int i,j,t,tx,ty;    for(i=0; i<4; i++)    {        tx=x+dx[i];        ty=y+dy[i];        if(tx<0||tx>3*n+1||ty<0||ty>3*m+1||vis[tx][ty]||mp[tx][ty]) continue ;        tot+=val[tx][ty];        vis[tx][ty]=1;        dfs(tx,ty);    }}void solve(){    int i,j,t;    memset(vis,0,sizeof(vis));    vis[0][0]=1;    dfs(0,0);    k=ans=0;    for(i=1; i<=3*n; i++)    {        for(j=1; j<=3*m; j++)        { if(!vis[i][j]&&!mp[i][j]) {     k++;     vis[i][j]=1;     tot=val[i][j];     dfs(i,j);     ans=max(ans,tot); }        }    }}int main(){    int i,j,t,nx,ny,test=0;    memset(val,0,sizeof(val));    for(i=1; i<=100; i++)    {        for(j=1; j<=100; j++)        { nx=3*i-1,ny=3*j-1; mp[nx][ny]=1; mp[nx-1][ny-1]=1; mp[nx+1][ny+1]=1; mp[nx-1][ny+1]=1; mp[nx+1][ny-1]=1;        }    }    for(i=1;i<=300;i++)    {        for(j=1;j<=300;j++)        { if(!mp[i][j]) val[i][j]=0.5;        }    }    while(scanf("%d%d",&m,&n),n||m)    {        memset(mp,0,sizeof(mp));        for(i=1; i<=n; i++)        { scanf("%s",s); for(j=1; j<=m; j++) {     nx=3*i-1,ny=3*j-1;     mp[nx][ny]=1;     if(s[j-1]=='\')     {         mp[nx-1][ny-1]=1;         mp[nx+1][ny+1]=1;     }     else     {         mp[nx-1][ny+1]=1;         mp[nx+1][ny-1]=1;     } }        }        solve();        printf("Maze #%d:n",++test);        if(k) printf("%d Cycles; the longest has length %d.n",k,int(ans));        else printf("There are no cycles.n");        printf("n");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372587.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号