本人目前最短的迷宫生成算法程序源代码

本人目前最短的迷宫生成算法程序源代码,第1张

概述生成的结果示例: ━━━━┳━━┳━━┳━━━━━━┳━┓ ┃━━━┓┗━┏┛┏┓┃━┳┓━━━┫┃┃ ┣━━┓┣━┓┃━┫┃┗━┃┗━━┓┃┃┃ ┃┏━┃┃━┫┣┓┃┣━━┻━━┓┣━┛┃ ┃┣━━ 生成的结果示例: ━━━━┳━━┳━━┳━━━━━━┳━┓┃━━━┓┗━┏┛┏┓┃━┳┓━━━┫┃┃┣━━┓┣━┓┃━┫┃┗━┃┗━━┓┃┃┃┃┏━┃┃━┫┣┓┃┣━━┻━━┓┣━┛┃┃┣━━┻┓┃┃┣━┃━┳━┳━┃┃┏━┃┃┃┏┳━┣━━┫┏┻┓┃┃┗┓┏┛┃━┫┃┏┛┃━┫┏━┃┃┃┃┃┣┓┗┛┏┻━┃┃┃┃┗┓┃┃┏┻━┫┏┛┃┃┏━┻┓━┫┃┃┣━┗━┫┃━┓┃┃┏┛┃┃┏━┣━┃┃┗┫┃┏━┻┳┓┗┳┫┃┃┃┃┃┏┻┓┃┣━┃┃┃━┳┛┗━┃┃┃┗┳┛┃┃┃┗┫┃┏┛┃┗┓┗━━┳━┃┗━┛━┻━┻┓┃┃┃┃┗━┻━┳━┃┏┻━━┓┏━━━┛┃┃┗┻┳━┏━┛┏┻┫┏━┓┃┃━━┳━┃┣━━┃┃┃━━┛┃┃┃┃┃┗┻━━┃━┫┗━━━┻┻━━━┻━┻┻━━━━━┻━  还能更短一些,比如改成格子形式的输出,那段放后面吧,现在先给出上图的生成代码源代码(共25行):#include <stdio.h>#include <stdlib.h>#include <time.h>int fy[500][500];int d[][2] = {{0,1},{1,0},{0,-1},{-1,0}};char yzfy[][4]={" ","┃","━","┛","┓","┫",     "━","┗","┻","┏","┣","┳","╋"};int w=20,h=15,rw = w+2,rh = h+2;int dfs(int y,int x){    if (fy[y][x]) return 0; else fy[y][x] |= 0x10;    for (int f=rand()%4,i=0,p=rand()&1?3:1,u,v; i<4; ++i,f=(f+p)%4)        if (dfs(v=y+d[f][0],u=x+d[f][1]))            fy[y][x] |= 1<<f,fy[v][u] |= (1<<((f+2)%4));    return 1;}int main(){    for (int y=0; y<rh; ++y) fy[y][0]|=10,fy[y][rw-1]|=10;    for (int x=0; x<rw; ++x) fy[0][x]|=5,fy[rh-1][x]|=5;    srand(time(NulL)); dfs(w/2,h/2); fy[1][1] |= 12; fy[rh-2][rw-2] |= 3;    for (int y=1; y<rh; ++y,puts(""))        for (int x=1; x<rw; ++x)            printf("%s",yzfy[15^((fy[y-1][x-1]&3)|(fy[y][x]&12))]);    return 0;}  以下为最短版本的输出效果:███████████████████████████████  █               █     █     ██ ███████ █████ █ █ ███ █ ███ ██ █     █   █   █ █ █ █   █ █ ██ █ ███ ███ █ ███ █ █ █████ █ ██ █ █   █   █   █   █ █     █ ██ █ █ █████████ █████ █ ███ █ ██   █           █   █   █ █   ██████████████████ █ █ ███ ██████             █   █ █   █ █   ████████ █████ █ ███ ███ █ █ █ ██     █     █ █ █ █   █ █ █ █ ██ ███ ███████ █ █ ███ █ █ █ █ ██ █ █     █   █ █   █ █ █ █ █ ██ █ █████ █ █ █ █ █ █ █ █ █ █ ██ █         █ █ █ █ █ █ █   █ ██ █████████████ ███ █ █ █████ ██   █   █   █   █   █ █ █     ██ █ █ █ █ █ █ ███ █ █ █ █ ███ ██ █   █   █       █ █     █    ███████████████████████████████ 生成的源代码(有效行数10):#include <stdio.h>#include <stdlib.h>#include <time.h>int fy[500][500];int d[][2] = {{0,0}},w=15,h=10,u=w*2+1,v=h*2+1;//1int yzfy(int y,int x){//2    if(x<1||y<1||x>=u-1||y>=v-1||fy[y][x])return 0;else fy[y][x]=1;//3    for (int f=rand()%4,p=rand()&1?3:1; i<4; ++i,f=(f+p)%4)//4        if(yzfy(y+*d[f]*2,x+d[f][1]*2)) fy[y+*d[f]][x+d[f][1]]=1;//5    return 1;//6}int main(){    srand(time(NulL)); yzfy(1,1); fy[1][0] = fy[v-2][u-1] = 1;//7    for (int y=0; y<v; ++y,puts(""))//8        for (int x=0; x<u; ++x)//9            printf("%s",fy[y][x]?" ":"█");//10    return 0;}  总结

以上是内存溢出为你收集整理的本人目前最短的迷宫生成算法程序源代码全部内容,希望文章能够帮你解决本人目前最短的迷宫生成算法程序源代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1209595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存