【搜索例题心得与收获】

一、搜索例题思考过程和注意的细节:

1、全排列

深搜理解含义的例题,果然一开始处于理解别人程序运行过程的阶段,于是自己动手写的时候,就会想问,为什么这么写?其实回归全排列本身的含义,就是数学中1~n的一组数,按照某种顺序排列在n个格子中,前面选过的数就不能再用。所以照着深搜的模板,列出里就行。

其实我自己走程序的时候在列出来123之后怎么回去,这个点,又困扰了,但是其实就是回溯呀,第三层都变遍历完了,返回2的这一层,又把2标记成了没读过,所以在进入本层的第三次循环时a[2]=3,再搜得a[3]=2,即132.(终于是都明白了!)

最后还有个点就是输出的格式,空四个空格,可以用setw(5),优先用最右侧的一个位置,正好空四个格。

第一题选数,同理,外加个和为素数的判别条件

2.南蛮图腾!!

看着有位大佬(偶像)的解法,结合坐标,先把基层的小三角输出,然后每次上、左下、右下轮番打印!观察规律有:列=2*行,从中间位置开始打印大三角顶点,每次左下方的三角是

a[x-pow(2,n-1)][y+pow(2,n-1)],右下类似,再深一层找更小层的三角重复上述过程。

3.健康的荷斯坦奶牛

思路:满足所需要的最少营养,记录此时的种类数及编号数;进一步筛,让所需要的饲料数最少,并记录此时的编号,若两饲料数据一样,优先记录的编号一定是小的,不会被替换。

困难一、搜索的参数,记录当前的位置!记录已搜索的饲料数总和。在这个搜索主体里,和全排列类似,按编号搜,记录相关的属性。

困难二、判断该饲料是否符合条件,每个营养元素都要对照,从已经选的编号饲料里比较。

所以,主体搜编号是否为最优解,另外判断饲料是否符合标准

4、最后的迷宫

总体上像个双层迷宫,

搜索视野迷宫时,特判奖杯是否和这个点重合,看不到的时候记得延伸视线

搜索路径(步数)迷宫的时候,结合队列,结合队伍首位的下标记录!同样需要视野的判断,

都要保证不超边界,记得标记走过的点,不走回头路。要记得添加队尾元素

用图,相当于把原来的字符图复制了一个数字的新图。记得初始化全图为没搜索过。

5、最大公约数

从x,y一层一层的取gcd,直到a[x][y]为1!!!

第一次更换: x,y只由上下左右的四个点来更新

即a[x][y]=gcd(a[x][y],a[x+1][y],a[x-1][y],a[x][y+1],a[x][y-1])

第二次更换: x,y依旧只由上下左右四个点来更新

不过上下左右四个点变成了他各自的上下左右四个点

马的遍历

好奇怪的游戏

棋盘

奇怪的电梯

最大食物链计数

取数游戏

二、用法新发现

1.setw()用于占位置,设置宽度,setfill()填充空位,()内放需要填补的字符等。

http://t.csdn.cn/F8DAhhttp://t.csdn.cn/F8DAh

2、迷宫类的问题,广搜,每次操作会重复四个或者八个方向,可以用两个数组存起来移动的对应的x,y方向。先按照一个方向搜到底写,再搜下一个方向。

3.求最大公约数

辗转相除法

http://t.csdn.cn/3MN0hicon-default.png?t=M3K6http://t.csdn.cn/3MN0h

三、有话要说:

1、基础题可以按照模板去套,注意搜索的限制条件,问题复杂的,理清楚主线要求, 弄清楚主干再加其他的限制。明白你要搜索的内容是什么

2、广搜的提高左右难度的题有待提升。

3、相信的力量。做事前先思考,有方向的行动

你可能感兴趣的:(心得总结,c++)