编程之美
把编程之美上的题目都做下
pangdawa
这个作者很懒,什么都没留下…
展开
-
广度优先搜索(BFS)用于图像处理
最近做一些需求,发现 BFS 还挺好使,经常用, 主要是用于 特定目的 的连通区域分析理论上 深度优先搜索也可以达到同样效果,但实际运用时发现 基于栈实现深度优先搜索在处理 比较大的连通区域时 导致 栈溢出, 那么还是使用 BFS 吧。// i - row,void bfsFix(int i, int j, cv::Mat & img, int thresholdValue, int destValue) { int m = img.rows; int n = img.cols; in原创 2020-07-18 11:40:44 · 375 阅读 · 0 评论 -
博弈,游戏,是否有先手必胜的情况
最近做一个题, 说是 判断 某个游戏 是否有先手必胜的情况, 在草稿纸上画了画, 想了一阵,发现 把 所有当前游戏的局面描述为一个状态, 状态之间的变化 实际上构成一颗 多叉树, 如果 有先手必胜的情况, 那么这棵树 就会具有某种特点,即 包含某性质的某颗子树, 然后自己 便陷入 严格定义树的特定,然后 试图编码查找这样的树, 发现 挺恼火。第二天开会的时候, 发现可以不用管这么多。树中某个节点...原创 2019-12-07 21:45:34 · 589 阅读 · 1 评论 -
稀疏矩阵的乘法
最近做一个题, 稀疏矩阵的乘法, 自己想了下,最直观的想法当然是 记录 下来 哪些 不为0的元素,只对这些元素进行操作, 假设 A * B, 由于 矩阵乘法的定义是 A的某行乘以 B的某列, 产生的第一个想法是 记录下来 A的每一行中不为0的元素的列号, 记为 集合 AN, 记录下来 B的每一列的行号,记为 集合 BN。然后 进行计算。 等写代码的时候才发现, 需要列号 和行号对应 两个数字 才...原创 2019-12-07 21:37:31 · 1763 阅读 · 2 评论 -
寻找重复数
出自 LeetCode 287,给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3来源:力扣(LeetCode)链接:https://leetcode-cn.co...原创 2019-12-02 20:36:07 · 120 阅读 · 0 评论 -
只出现一次的数字
最近做一个题,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。要求 o(n)算法且不使用额外空间,想了很久,想到一个方案,统计每一位的出现次数,比如数字是32位 int 型,那么统计32个位上 1和0 的出现次数,某个数字出现3次,那么他的每一位都会出现3次。出现一次的数字某个位只会贡献1次出现。组合每个位上出现次数不是3的整数倍的值,就知道只出现一次的那个数了...原创 2019-10-26 10:22:53 · 143 阅读 · 0 评论 -
编程之美---正则匹配
动态规划,关键是处理 * 号, 根据匹配次数进行 状态转移,关键点是 多次匹配时, 保留星号,待匹配字符串划掉当前匹配字符,通过递归,即为多次匹配,不需要手动去写一个循环来处理 多次匹配。仅仅 匹配一次时, 星号去掉,待匹配字符串划掉当前匹配字符。class Solution {public: int width; bool isMatch(const char * s, const c...原创 2019-06-18 10:18:22 · 129 阅读 · 0 评论 -
编程之美---反转整数
主要是判断溢出,自己尝试出一种很简单的方法class Solution {public: int reverse(int x) { if (x == 0) { return 0; } int tmp = x; int res = 0; while (x != 0) { unsigned int tt = (unsigned i...原创 2019-06-15 10:09:34 · 111 阅读 · 0 评论 -
编程之美---NIM游戏
使用了深度搜索、深度优先遍历多叉树等方法,最终输出 先手 必胜策略下的每一步状态转移,奇数步对应先手,偶数步对应后手#include <iostream>#include <vector>using namespace std;struct Sta{ int pos; // 从第几个位置取,从0开始计数 int len; // 取几个数,1或者2};...原创 2019-06-13 17:54:53 · 2180 阅读 · 0 评论 -
编程之美---找出翻烙饼的最少次数
最近把《编程之美》上这个题做了下, 觉得挺简单的啊,就是一个广度优先搜索,用到的数据结构是 数组+队列+栈, 搜索空间还需要进一步优化感觉代码比 书上的要简单些,就是一些小函数 组合一下,不要使用类!!!#include <iostream>#include <vector>#include<queue>#include<stack>u...原创 2019-06-09 11:44:31 · 309 阅读 · 0 评论