搜索过后……

本次暑期集训重点介绍了搜索算法的基础概念,包括穷举、深度优先搜索与广度优先搜索,并探讨了它们的应用场景及优缺点。通过学习,学员们掌握了如何选择合适的搜索策略解决实际问题。

继数据结构之后,我们又一次的结束了一个类似很难的专题,搜索!!!

越来越感觉这个暑假的集训并不是让我们深入的了解一个专题,而是那种类似让我们知道:嗯, 我们遇到这种题的时候应该这么做,用这种方法可以做出来!!也许是因为时间短吧,这么短的时间里面想要深度的探索一个东西有点不现实,所以只好退而求次先在有限的时间里面来个广度搜索,如果你有速度的话, 那么一样可以探索的很深!

这次搜索专题我们只学了“穷举”“深度优先搜索”“广度优先搜索”;

 

用穷举法解决问题的优点是简单,不用动脑子穷举是利用暴力,利用最直接的方式,尝试所有方法,来找到答案的。这种方法是你经常第一时间想到的方法。如果时间和空间都允许,就穷举它。一般情况下容易编码,也容易调试,如果你面对一道可能状态小于百万的题目,那么你可以考虑使用穷举。当然,能剪枝的地方还是不能手下留情啊!!
深搜,一某一个节点开始,不断向前搜索,知道无路可走或者所有相邻节点都已经
拜访过为止,然后退回到前一个节点,寻找没有拜访过的继续这一个过程。有时候,
可能会需要stack来记录所走过的路径!
而广搜是以某一节点为出发点,先拜访所有相邻节点。再依序拜访与刚才被拜访相邻
但是尚未拜访过的点,直到所有的点被拜访过!因此广搜时需要使用queue来记录其顺序,当然,也可以用数组模拟!呵呵!!
采用优先队列的知识加上广搜可以做很多有条件的搜索题!比如一些迷宫题中由于有的格子需要的时间不同,如果直接广搜的话,不容易控制,就可以使用加上优先队列的广搜来做,呵呵,这个取自某一位同学的博客,瞻仰下!!等咱学习了,在另写一个博客纪念下!!
实验4 Linux环境下C编程 1、实验目的 (1)学会使用vi编辑器编辑文本。 (2)编写C语言程序,使用gcc编译器对其编译和调试。 2、实验预备内容 (1)参阅相关Linux操作系统的安装手册,熟悉Linux的基本安装和配置; (2)参阅相关Linux的命令参考手册,熟悉Linux下的操作命令。 Vi 的原意是 "Visual",它是一个立即反应的编辑程式,也就是说可以立刻看到操作结果。Vi是我们在Linux系统上用的最多,最常见的文本编辑器。实验中列出了部分编辑命令,供参考,更详细的信息请在Linux下运行“man vi”来获取。 3、实验内容 (1)进入和退出vi 进入vi:在系统提示符下输入命令“vi 文件名”,便可进入vi。 退出vi:在命令方式下可有几种方法退出vi编辑器。 :wq 保存文件并退出,回到UNIX shell下。 :q! 强行退出vi。感叹号(!)告诉vi,无条件退出,丢弃缓冲区内容。这样,先前对该文件所做的修改或输入都被抛弃。 (2)编辑文件 在提示符后输入命令 :vi 文件名,然后按〈Enter〉键,进入vi。 vi下有两种模式:命令方式式和插入方式式(其中命令模式为默认方式,在插入方式下可自由编辑) 输入插入命令i(屏幕上看不到字符i),可切换到编辑模式;按〈Esc〉键,从插入方式切换到命令方式。 在插入方式下可用鼠标键盘对文件内容进行编辑。 在命令方式下可通过一些命令对文件进行处理: i……插入命令 a……附加命令 x……删除命令,可以使用数字x,如5x删除5个字符 输入数字,按下〈Space〉,如10〈Space〉……光标跳转命令 r……替换命令 o……加空行命令 d$……将光标位置至行尾的字符都删除 u……撤销命令 dd……删除行命令 除以上的编辑命令以外,还有档案指令。档案指令以:开头,跟编辑指令有点区别。 :wq ……保存退出命令 :r <文件>……把<文件>读入到当前文档 :r! <命令>…… 把<命令>的输出插入到当前文本中 :nr <文件>…… 把<文件>插入到第n行 :!<命令> ……运行<命令>,然后返回 :sh…… 转到SHELL :x ……保存之后退出 :w>> <文件> ……添加到<文件>末尾 :w! ……覆盖当前文件 :q! ……不存盘就退出 :q ……退出 (3)编写C程序 进入linux的文本模式之后,在命令行键入vi 文件名.c 然后回车,如输入“vi ex1.c”,表示编辑一个名字为ex1.c的C程序文件。注意扩展名是.c表明是C程序。最基本的命令I :当进入刚打开的文件时,不能写入信息,这时按一下键盘上的I键(insert),插入的意思,就可以进入插入方式了。输入程序: #include <stdio.h> int main() { printf(“Hello World!\n”); return 1; } 当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的Esc 键;2)键入冒号(:),紧跟在冒号后面是wq(意思是保存并退出)。如果不想保存退出,则在第二步键入冒号之后,键入q!(不带w,即为不保存)。如 :wq 或 :q! 。 退出vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。 编译命令gcc,格式是:gcc 文件名.c –o 输出文件名.out,如“gcc ex1.c –o ex1.out”,输出文件名可以和源文件名一样,也可以不一样。 其中gcc是c的编译器,ex1.c 是C程序的名称,-o为参数,指定输出文件名,ex1.out为指定的输出文件名。 也可以不带参数-o及后面的输出文件名,则默认的输出文件是a.out 。如输入“gcc ex1.c”,也可以对ex1.c进行编译,使用ls命令查看,可以看到多出一个文件a.out,即输出文件,直接运行即可。 最后一步是运行程序,在提示符后输入 ./ 输出文件名.out,即可运行并看到结果。如输入“./ex1.out”,则表示运行ex1.out文件,如输入“./a.out” 则表示运行a.out文件。 “./”表示在当前目录下查找。
11-19
### vi编辑器使用 #### 进入与新建文件 使用 `vi [file]` 命令打开或新建文件,若文件不存在则新建;使用 `vi [file] +[line]` 可直接定位到指定行打开文件[^2]。 #### 工作模式 - **命令模式**:是vi打开文件后的默认模式,可进行光标移动、整行操作等操作。 - **编辑模式**:在命令模式下按 `i`(在光标前插入)、`a`(在光标后插入)、`o`(在当前行下插入新行)等进入编辑模式,可输入和修改文本。 - **末行模式**:在命令模式下按 `:` 进入末行模式,可进行文件保存、退出、搜索等操作。 #### 基本操作 - **光标移动**:可进行上、下、左、右移动,行内移动(如 `$` 到行尾,`^` 到行首),行数移动(如 `nG` 到第n行)等操作。 - **整行操作**:可进行删除整行(`dd`)、复制整行(`yy`)与粘贴(`p`)、撤销(`u`)和恢复撤销(`Ctrl + r`)等操作。 - **末行搜索**:在末行模式下输入 `/pattern` 进行正向搜索,`?pattern` 进行反向搜索。 - **行号显示与语法高亮**:在末行模式下输入 `set number` 显示行号,`syntax on` 开启语法高亮。 - **异常退出**:若vi异常退出,再次打开文件时可能会提示有交换文件,可根据提示处理。 #### 退出 在命令模式下,按 `:` 进入末行模式,输入 `wq` 保存并退出,`q!` 不保存强制退出。 ### gcc编译调试C程序 #### 编译过程 - 预处理:`gcc -E [file.c] -o [name.i]`,生成预处理后的文件。 - 编译:`gcc -S [file.c] -o [name.s]`,生成汇编文件。 - 汇编:`gcc -c [file.c]`,生成目标文件。 - 链接:`gcc [file.c] -o [name]`,生成可执行文件。也可直接使用 `gcc [file.c]` 生成默认名为 `a.out` 的可执行文件。 #### 运行 编译通过后,在shell中输入 `./[name]` 运行可执行文件。 #### 调试(使用gdb) - 编译时添加 `-g` 选项:`gcc -g [file.c] -o [name]`,生成带有调试信息的可执行文件。 - 启动gdb:`gdb [name]`。 - 常用命令:`break [line]` 设置断点,`run` 开始运行程序,`next` 单步执行,`continue` 继续执行到下一个断点,`print [variable]` 打印变量值等。 ### C程序编写、编译、运行步骤 1. 使用 `vi [file.c]` 打开或新建C程序文件,进入编辑模式编写C程序。 2. 编写完成后,按 `Esc` 进入命令模式,再按 `:` 进入末行模式,输入 `wq` 保存并退出。 3. 在shell中使用 `gcc [file.c] -o [name]` 编译C程序。 4. 若编译通过,使用 `./[name]` 运行可执行文件;若编译不通过,根据错误提示,重新使用 `vi` 打开文件修改,再次编译运行。 ```c // 示例C程序 #include <stdio.h> int main() { printf("Hello, World!\n"); return 0; } ``` 编译命令:`gcc hello.c -o hello` 运行命令:`./hello`
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值