初试博客
第一次弄这个什么博客
本来呢是打算自己通过一些其他的平台,像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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律