初试博客

第一次弄这个什么博客

本来呢是打算自己通过一些其他的平台,像typecho,hexo之类的弄得,后来发现要弄好多东西,而且。。。主要我不会哈哈,所以选择通过博客园先试试吧,等以后水平高一点了,不像现在这么菜鸡的话就去尝试

不知道贴什么,就贴个迷宫吧,不过只能输出一条,最短和全部已经有思路单比较懒,所以就没去尝试了,不过尝试的话估计也要花上好长时间吧,毕竟比较菜嘛。

这个是生成迷宫

复制代码
 1 /*
 2  * @Description: 啥也不会的初试-迷宫生成
 3  * @version: 
 4  * @Author: TZY Editor
 5  * @Date: 2020-10-11 12:04:34
 6  * @LastEditors: TZY Editor
 7  * @LastEditTime: 2020-10-11 16:14:35
 8  */
 9 #include<iostream>
10 using namespace std;
11 
12 #define size 512
13 int M, N;         
14 int** Maze;   //全局变量
15 
16 void Manual_generation(int m, int n) //手动生成
17 {
18     Maze=new int*[m];
19     for(int k=0;k<m;k++)
20     Maze[k]=new int[n]; //生成二维数组
21     int i, j;
22     for(i=0;i<m;i++)
23     {
24         cout<<"请输入第"<<i+1<<"行的数据(1表示障碍,0为通路,回车表示结束):\n";
25         for(j=0;j<n;j++)
26         {
27             cin>>Maze[i][j];
28         }
29     }
30 }
31 
32 void Automatic_generation(int m,int n) //自动生成
33 {
34     Maze=new int*[m];
35     for(int k=0;k<m;k++)
36     Maze[k]=new int[n]; //生成二维数组
37     int i,j;
38     for(int i=0;i<n;i++)
39     {
40         Maze[0][i]=1;
41         Maze[m-1][i]=1;
42     }
43     for(int i=0;i<m;i++)
44     {
45         Maze[i][0]=1;
46         Maze[i][n-1]=1;
47     }
48     for(i=1;i<m-1;i++)
49     for(j=1;j<n-1;j++)
50     {
51         Maze[i][j]=rand()%2+0; //随机生成
52     }
53 }
54 
55 void Print_Maze(int m,int n)
56 {
57     int i,j;
58     for(i=0;i<m;i++)
59     {
60         for(j=0;j<n;j++)
61         {
62             if(Maze[i][j]==1) cout<<"";
63             else if(Maze[i][j]==0) cout<<"";
64         }
65         cout<<"\n";
66     }
67 }
复制代码

这个是路径输出(随机单条)

复制代码
/*
 * @Description: 啥也不会的初试-迷宫路径搜索
 * @version: 只能输出一条路径
 * @Author: TZY Editor
 * @Date: 2020-10-11 12:49:35
 * @LastEditors: TZY Editor
 * @LastEditTime: 2020-10-11 16:11:05
 */
#include<iostream>
#include"formMaze.cpp"
using namespace std;

typedef struct 
{   
    //(i,j,pre)   //点的位置
    int i;        //x位置
    int j;        //y位置
    int pre;      //前一个点的序号
}Sq;       //定义非循环队列
Sq Que[size];
int front=0,rear=0; //定义头节点,尾节点

void Print(Sq m[],int front) //打印路径
{
    for(int i=front;i>0;i=m[i].pre)
    {
        printf("(%d,%d)",m[i].i,m[i].j);
    }
    printf("\n");
}
int Search(int x0,int y0,int x_end,int y_end) //(x0,y0)->(x_end,y_end) 注意是逆序
{
    int i,j,i_next,j_next;
    int choice;
    int k=0;  //计数器
    rear++;
    Que[rear].i=x0;Que[rear].j=y0;Que[rear].pre=-1;
    Maze[x0][y0]=2; // 在迷宫中改设为障碍,防止重复搜索
    while(front!=rear)
    {
        front++; 
        i=Que[front].i;j=Que[front].j;
        if(i==x_end && j==y_end)
        {
            Print(Que,front);
            k++;
        }
        for(choice=0;choice<4;choice++) // 东:0,南:1,西:2,北:3.
        {
            switch(choice)
            {
                case 0:i_next=i-1;j_next=j;break; //
                case 1:i_next=i;j_next=j+1;break; //
                case 2:i_next=i+1;j_next=j;break; //西
                case 3:i_next=i;j_next=j-1;break; //
            }
            if(Maze[i_next][j_next]==0)
            {
                rear++;
                Que[rear].i=i_next;
                Que[rear].j=j_next;
                Que[rear].pre=front;
                Maze[i_next][j_next]=2; //设为2,防止重复搜索
            }
        }
    }
    return k;
}
int main()
{
    int Flag; //判断用
    int m,n;
    int choice;
    cout<<"请输入迷宫的行和列:";
    cin>>m>>n;
    Retry:cout<<"请选择手动生成还是自动生成:\n手动生成输入 1 \n自动生成输入 2 \n";
    cin>>choice;
    switch(choice)
    {
        case 1: Manual_generation(m,n);break;
        case 2: Automatic_generation(m,n);break;
        default: cout<<"输入有误,请重试!\n";goto Retry;
    }
    Print_Maze(m,n);
    cout<<"迷宫路径:\n";
    Flag= Search(m-2,n-2,1,1);
    if(Flag==0)  cout<<"无路径解\n";
    system("pause");
    return 0;
}
复制代码

 

posted @   寺瞳  阅读(132)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示