#include using namespace std; #include<string.h> #define max1 100 typedef int datatype; datatype node[max1][max1];//记录坐标是否走过 // 规定东南西北为右下左上 typedef struct { datatype map1[max1][max1]; int m,n; }MAP;//迷宫的结构体 typedef struct { int x[max1]; int y[max1]; }NODE;//储存每一步经过的点的结构体 void createmap(MAP &p) { cout << “请输入迷宫的大小(nm):" << endl; cout << “n:”; cin >> p.n ; // 迷宫的宽 cout << “m:”; cin >> p.m; // 迷宫的长 cout << “请输入一个” << p.n << "” << p.m << “的迷宫(1为障碍,0为通路,迷宫入口为(1,1),出口为(” << p.n << “,” << p.m << “)):” << endl; for(int i=1;i<=p.n;i++) for(int j=1;j<=p.m;j++) { cin >> p.map1[i][j];// 设置通路和障碍 if(p.map1[i][j]>1) p.map1[i][j]=1;// 如果障碍值大于1则重新赋值为1 } } int flag=0;// 记录解的个数 void disp(NODE &p,int n) { if(flag1) cout << “迷宫有解,解如下:” <<endl; cout << flag << “:”; // 输出该解是第几个解 for(int i=0;i<=n;i++) // 打印路径 if(n!=i) cout << “(” << p.x[i] << “,” << p.y[i] << “)” << “->”; else cout << “(” << p.x[i] << “,” << p.y[i] << “)” << endl; } void dfs(MAP &p,int x,int y,NODE &q,int ans) { q.x[ans]=x;//记录当前步数的x坐标 q.y[ans]=y;//记录当前步数的y坐标 if(xp.n&&y==p.m&&p.map1[x][y]==0)//判断是否到达出口 { flag++;// 解的数目加一 disp(q,ans); // 调用函数打印路径 return; } if(y+1<=p.m&&node[x][y+1]==0&&p.map1[x][y+1]==0)//判断能不能向东走 { node[x][y+1]=1;//标记走过的点的坐标 dfs(p,x,y+1,q,ans+1);// 递归将向东的下一个坐标作为一个新的向东的发散点 node[x][y+1]=0;// 当回溯时将走过的点的标记归零 } if(x-1>=1&&node[x-1][y]==0&&p.map1[x-1][y]==0)//判断能不能向北走 { node[x-1][y]=1;//标记走过的点的坐标 dfs(p,x-1,y,q,ans+1);// 递归将向北的下一个坐标作为一个新的向北的发散的点 node[x-1][y]=0;// 当回溯时将走过的点的标记归零 } if(y-1>=1&&node[x][y-1]==0&&p.map1[x][y-1]==0)//判断能不能向西走 { node[x][y-1]=1;//标记走过的点的坐标 dfs(p,x,y-1,q,ans+1);// 递归将向西的下一个坐标作为一个新的向西的发散的点 node[x][y-1]=0;// 当回溯时将走过的点的标记归零 } if(x+1<=p.n&&node[x+1][y]==0&&p.map1[x+1][y]0)//判断能不能向南走 { node[x+1][y]=1;//标记走过的点的坐标 dfs(p,x+1,y,q,ans+1);// 递归将向南的下一个坐标作为一个新的向南的发散的点 node[x+1][y]=0;// 当回溯时将走过的点的标记归零 } } int main() { MAP p; NODE q; memset(node,0,sizeof(node));// 将标记数组初始化 createmap§;// 调用创建迷宫的函数 node1=1;// 标记入口 dfs(p,1,1,q,0);// 以入口为发散的点开始遍历 if(flag0) cout << “该迷宫没有通路!” << endl; return 0; }
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法;增加了支持甘特图的mermaid语法1 功能;增加了 多屏幕编辑 Markdown文章功能;增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;增加了 检查列表 功能。撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ctrl/Command + Shift + H 无序列表:Ctrl/Command + Shift + U 有序列表:Ctrl/Command + Shift + O 检查列表:Ctrl/Command + Shift + C 插入代码:Ctrl/Command + Shift + K 插入链接:Ctrl/Command + Shift + L 插入图片:Ctrl/Command + Shift + G
直接输入1次#,并按下space后,将生成1级标题。 输入2次#,并按下space后,将生成2级标题。 以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.
// An highlighted block var foo = 'bar';一个简单的表格是这么创建的:
项目Value电脑$1600手机$12导管$1使用:---------:居中 使用:----------居左 使用----------:居右
第一列第二列第三列第一列文本居中第二列文本居右第三列文本居左SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPEASCIIHTMLSingle backticks'Isn't this fun?'‘Isn’t this fun?’Quotes"Isn't this fun?"“Isn’t this fun?”Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash一个具有注脚的文本。2
Markdown将文本转换为 HTML。
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五这将产生一个流程图。:
链接 长方形 圆 圆角长方形 菱形 关于 Mermaid 语法,参考 这儿,我们依旧会支持flowchart的流程图:
Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no 关于 Flowchart流程图 语法,参考 这儿.如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入, 继续你的创作。
mermaid语法说明 ↩︎
注脚的解释 ↩︎