摘要: 题意:给你两个数,一个n表示这个三角有多少层,一个sum表示总和 思路: 类似杨辉三角 1 1 1 1 2 1 第n行的第k个数 为 n!/k!(n-k)! 解决问题的代码: 阅读全文
posted @ 2018-08-02 12:49 徐小晋 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个已经排序号的数字,从中间切一刀,成两个数,要求这两个数的差最小 思路:暴力比较差最小值 if (a[mid]) { int x = a[0]; int y = a[mid]; for (int i = 1; i < mid; i++) x = x * 10 + a[i]; for (i 阅读全文
posted @ 2018-08-02 12:41 徐小晋 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 广度优化搜索算法的本质:要求每个状态不能重复,这就需要我们:第一次先走一步可以到达的状态,如果还没有找到答案,就需要我们走到两步可以到达的状态。依次下去 核心算法:队列 基本步骤: 1.将最初状态添加到队列 2.从对列的前端不断取出状态 3.队列后端添加该状态,可以转移且并没有被访问过的状态 4.最 阅读全文
posted @ 2018-08-02 12:29 徐小晋 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题意:火星撞地球,你要跑到一个永远安全的地方,求最短时间 思路:bfs+预处理 这题的数据量比较大,所以需要进行预处理 for (int j = 0; j<5; j++) { //预处理 int dx = x + dir[j][0], dy = y + dir[j][1]; if (dx < 0 | 阅读全文
posted @ 2018-08-02 12:23 徐小晋 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个三维地图,然后让你走出去,找到最短路径。 思路:bfs struct node{ int x, y, z; int t;}; 代码上的小技巧:三维地图需要你去遍历的时候需要走六个方向: 解决问题的代码: 阅读全文
posted @ 2018-08-02 12:14 徐小晋 阅读(995) 评论(0) 推荐(0) 编辑
摘要: 深度优化搜索算法的本质:就是从一状态不断转移,如果无法转移了就需要返回上一个状态,知道找到解为止。 其核心:递归函数 基本模型: 阅读全文
posted @ 2018-08-02 12:00 徐小晋 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 题意:完成数独程序,数独要求每行每列且每个3*3矩阵都必须是1~9的数字组成。 思路:dfs 现在推 第一个矩阵为 0,0 0,1 0,2 第二个矩阵为 0,3 0,4 0,5 1,0 1,1 1,2 1,3 1,4 1,5 2,0 2,1 2,2 2,3 2,4 2,5 如果直接 (r+c)/3有 阅读全文
posted @ 2018-08-02 11:56 徐小晋 阅读(170) 评论(0) 推荐(1) 编辑
摘要: 题意:一个集合(矩阵) m[i][j]=m[j][i]权值,分成两个集合,使其权值最大。注:在同一个集合中权值只能算一个。 思路:dfs 代码上需要注意的问题: 这里有个回溯的操作,如果不执行dfs的话,就说明i放到集合1并不合适,所以放到集合0 解决问题的代码: 阅读全文
posted @ 2018-08-02 10:33 徐小晋 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题意:一个5*5地图上面,从任意位置上下左右跳五次,组成一个数。问:不重复的数有多少个? 思路:dfs 解决问题的代码: 阅读全文
posted @ 2018-08-02 10:25 徐小晋 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题意:有不规则地图,在上面放n个相同的棋子,要求摆放的时候不同行不同列。问:有多少种摆法? 思路:dfs+回溯 代码上需要注意的地方: 其中有个回溯的操作,为什么? 因为如果当前没有执行dfs(cur+1)这个语句的话,说明i这个位置不能摆放棋子,或者说摆放棋子不妥。所以需要往回标记 解决问题的代码 阅读全文
posted @ 2018-08-02 10:18 徐小晋 阅读(398) 评论(0) 推荐(0) 编辑