算法与OJ
文章平均质量分 95
枯萎的海风
向来缘浅, 奈何情深, 彼此豆蔻,谁许谁地老天荒, 敌不过似水流年, 逃不过此间少年
展开
-
[POJ][1001]Exponentiation
DescriptionProblems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many co转载 2014-11-17 21:09:37 · 664 阅读 · 0 评论 -
poj 1001 exponent by zhyh2010
Source CodeProblem: 1001 User: zhyh2010Memory: 228K Time: 0MSLanguage: C++ Result: AcceptedSource Code// header#include #include using namespace std;c原创 2014-11-17 21:11:25 · 834 阅读 · 0 评论 -
LeetCode 130. Surrounded Regions
1. 题目描述 Given a 2D board containing ‘X’ and ‘O’, capture all regions surrounded by ‘X’. A region is captured by flipping all ‘O’s into ‘X’s in that surrounded region. For example, X X X原创 2016-03-30 12:21:57 · 462 阅读 · 0 评论 -
leetcode OJ1 Two Sum求解小结
Introduction最近实验室的师兄们开始找工作了, 想到自己也快了, 于是打算从现在准备起来, 于是我看上了LeetCode, 开刷,这是第一题。Question 1 Two SumLeetCode Two Sum Given an array of integers, find two numbers such that they add up to a specific target nu原创 2015-09-07 20:33:54 · 509 阅读 · 0 评论 -
LeetCode OJ2 Add Two Numbers 小结
Add Two Numbers 问题描述You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and原创 2015-09-09 17:32:49 · 433 阅读 · 0 评论 -
LeetCode OJ5 Longest Palindromic Substring 小结
Longest Palindromic Substring问题描述最长回文字串Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromi原创 2015-09-16 18:01:29 · 330 阅读 · 0 评论 -
leetcode OJ6 ZigZag Conversion 小结
ZigZag Conversion今天把自己吓一跳, leetcode上已经刷到22题了, csdn上才总结了 5 题, 赶紧停下来, 写下总结, 并看看大神的代码。问题描述The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to d原创 2015-09-22 20:40:23 · 369 阅读 · 0 评论 -
LeetCode OJ7 Reverse Integer 小结
Reverse Integer问题描述Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321解题思路正常的数字翻转, 并检验溢出, 同时注意构造数据的时候, 用大一号的数据类型来容纳数据。我们的代码class Solution {public: int revers原创 2015-09-22 20:48:58 · 403 阅读 · 0 评论 -
LeetCode OJ8 String to Integer (atoi) 小结
String to Integer (atoi)题目描述Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what ar原创 2015-09-23 10:20:33 · 466 阅读 · 0 评论 -
LeetCode OJ10 Regular Expression Matching
LeetCode OJ10 Regular Expression Matching题目要求Implement regular expression matching with support for ‘.’ and ‘*’. ‘.’ Matches any single character. ‘*’ Matches zero or more of the preceding element原创 2015-10-12 21:53:13 · 471 阅读 · 0 评论 -
最小重量问题的分支界限法的C++实现方案
*1.问题描述:* *2.解题思路* 这个题目基本思想是 利用分支界限法, 核心就是需要设计一个 优先级标准, 这里我们将 问题的层数,也就是第i个部件作为优先级, 对于相同i的部件,以重量更小的作为优先级的评价标准,然后借助标准库中的优先级队列实现,分支界限法 查找目标。另外需要注意的是, 使用标准库中的优先级队列时候需要自己重载operator< ,而且一定要有const,233333333原创 2015-05-25 21:09:47 · 5107 阅读 · 0 评论 -
拉丁矩阵问题 利用回溯法的C++实现方案
这两天正好在赶算法设计的作业,这里把做的几个需要写代码的题放上来,方便以后查看。 1.题目要求 2.算法思想 这个题目基本思想是 利用回溯法,对于 m 行 n 列, 本质上就是一个二维数组, 我们可以将问题的解写成 x[1],x[2],x[3] … x[m*n], 那么对于每个点 x[i] 的取值实际上是 [1, n], 套用回溯法的算法框架,这里的 约束条件 ,就是同行,同列 没有相原创 2015-05-25 20:53:55 · 5138 阅读 · 1 评论 -
经典算法---8皇后问题的C++实现
其实8皇后问题,很好理解,8X8的棋盘上面,放8只皇后,使他们之间不会相互攻击,具体的定义,渊源可以查看百度百科八皇后问题本科时候学数据结构的时候就接触过这个经典算法,不过当时没怎么听明白,或者说知道是个回溯的思想,却不知道该怎么实现,原谅我只是个小白。今天上振动力学的时候,闲着没事突然想到了这个问题,顺手写下了伪代码,到实验室调试一下,基本就出来了。调试过程中遇到了两个bug,在代码中已经注明了(原创 2015-05-19 11:35:04 · 7658 阅读 · 0 评论 -
poj 1782 Run Length Encoding
这道题目不难,但是有很多细节是需要注意的1.读入一个带有空格的字符串string,可以采用string类中的getline方法2.这道题目理解起来有些问题,这里做一些解释:理解题目出了问题 走了很多弯路!!!run length encoding 变长编码,要求 2- 9 个相同字符转化为 count + X 形式表示,同时提取最大子串 前后加上1,亦即 1 str 1如果原创 2015-01-17 11:47:30 · 741 阅读 · 0 评论 -
poj 1008 Maya Calendar
这道题目其实不难,不过总是废了好多时间,好忧桑,编程能力还是太弱小了,遇到的问题主要是:1.数据读入,有个'.',后来突然想到可以通过读入float解决2.年月转换时候的+1,-1有些晕,这个需要格外注意下。Source CodeProblem: 1008 User: zhyh2010Memory: 240K Time: 0MS原创 2015-01-07 22:08:20 · 546 阅读 · 0 评论 -
poj 1007 DNAsorting
1.这道题目其实蛮简单的,只是在排序的时候卡了一下,本来打算找一下能不能用C++自带的快速排序解决的(qsort)但是qsort定义的格式和我传入的格式不符合,实在受不了,就自己直接用快速排序实现了一下2.还是自己太弱了,网上一搜发现有很多用sort,qsort做的,果然自己还是太弱小了http://blog.csdn.net/lyy289065406/article/details/66原创 2015-01-07 19:55:28 · 552 阅读 · 0 评论 -
poj 1006 Biorhythms
今天学完B树之后想顺手做一道poj,依次下来今天轮到1006,但是读完题目发现这道题目似乎是个数论题目,没有思路。于是上网搜,发现这道题目是个中国余数定理的题目,没办法,研究了一晚上的中国余数定理,感觉算法导论中这部分的内容好像将不是很清楚,于是参考了http://blog.csdn.net/jiaobuchong/article/details/40585575这篇文章,终于把中国余数定理弄明白原创 2014-12-03 22:42:18 · 721 阅读 · 0 评论 -
poj 1005 I Think I Need a Houseboat(水题)
今天顺手又做了一题,也是一道水题,很快就做出来了,今天有些进步,没有写成C++类的形式,值得高兴下,自己还是会写成C的格式的。在用PI的时候遇到一些问题,我之前都是用matlab写代码的,pi什么的基本函数都是直接提供的,到了C++中,似乎没有直接的PI给我使用,于是我上网找了一下,基本两种方法:1.http://blog.csdn.net/markton1990/article/deta原创 2014-12-02 14:20:13 · 670 阅读 · 0 评论 -
poj 1004 Financial Management
这道题目读到最后就是个求平均数的问题,这真的是一道水到极点的题目,本来以为会在数字表达上面有些难度,于是写了个round,然后两次compile error,系统不识别round函数,可是这在我的vs上面能跑的,没办法写了一个myround实现数据元整,后来发现完全没有必要,AC之后看了其他孩子的代码,压根就没数据后两位的处理,果然还是我想多了,水题,不推荐做。突然发现自己已经习惯拿到一个问题直接原创 2014-12-01 22:49:20 · 746 阅读 · 0 评论 -
poj 1003 hangover 水题
这道题目是我现在遇到的最简单的一题,(忽略1000),问题没有任何难度,就是寻找恰好大于问题所需值的卡片个数,我们这里第一反应是给他建立一个表格记录对应n张卡片最大长度,然后通过二分查找,很容易得到所需卡片数目。(可能是最近在看动态规划的原因吧,有些草木皆兵了)。另外,提交后发现其他孩子的源代码,用C写的,很简洁,他们拿到这个数直接判断,和我们这个方法思路不太一样,当做一种启发吧。http:/原创 2014-11-30 15:26:52 · 902 阅读 · 0 评论 -
poj 1002 电话号码查重
虽然网上都说#include #include #include using namespace std;class PhoneNUM{public: PhoneNUM(); ~PhoneNUM(); void input(); void output();protected: void initmap();private: //int m_dat原创 2014-11-20 18:44:54 · 1654 阅读 · 0 评论 -
经典算法之线性时间选择的C实现方法
线性时间选择问题,实际上是随机快速排序算法的一个引申,ie,通过对随机快速排序算法的小小改动就可以实现。算法依然参考算法导论中的相关内容,需要注意的是, 代码中 的id 是指 所要 找的量在 现有区间 【low, high】中的位置, 因而,需要涉及 一定转化。 ps: mid - low + 1 表示 我们划分出来的第一个区间的长度大小。源代码如下:// ====================原创 2015-06-06 20:51:29 · 3880 阅读 · 0 评论 -
经典算法之快速排序的C实现方法
这里所实现的快速排序是参考《算法导论》上的伪代码,虽然之前对着伪代码敲过一遍,可是现在抛开伪代码,自己敲还是有些费劲。<-_->!!特别需要注意的是算法导论中的快排方法,和课上讲的不太一样,课上讲的主要是利用首尾两个下标来实现, 而算法导论中,主要是 从前到后,依次判断,将小于privot 的值全部移到 i 的前面去。这里 i 是指 小于 privot值的下标上界。源代码如下:// ========原创 2015-06-06 18:25:54 · 1383 阅读 · 0 评论 -
经典算法之归并排序的C实现方法
以前写过归并排序的算法,但是时间过了好久,忘记怎么写的了,(也是醉了)。正好复习算法的时候遇到这个问题,就重新写了一下,把遇到的一些问题顺便记录一下。核心就是用两个子数组记录分割后的两个数组中的变量, 然后依次比较大小即可。 这里有个细节需要注意一下, arr_temp1[mid + 1 - low] = INT_MAX; 这段代码,用来设置一个哨兵, 用这种方法可以避免判断数组是否为空了具体原创 2015-06-06 16:00:56 · 2011 阅读 · 0 评论 -
经典算法之二分搜索技术
二分法是个非常经典的算法,是分治思想的很好的体现。在复习算法的过程中,正好把他记录下来。本来想写递归的,后来想想还是用迭代,效率更高些,虽然对这种小的数据没什么多大影响,(好吧,其实是我太懒了 <-_->!!)这里有个坑,以前一直没有注意,这里标记一下,调整上下限的时候一定要low = mid + 1; high = mid - 1; 否则可能遇到相邻的两个数字时候,陷入死循环!!!代码如下://原创 2015-06-06 11:47:02 · 2636 阅读 · 0 评论 -
生成n个元素的全排列 C实现
最近在准备复习算法设计的考试,下边记录一些,看笔记时突然想到的解法。 问题是这样的 用递归实现 n 个元素的全排列。当时老师给出的解答是 假定第i个元素 ri 放在首位,于是 f(r1,r2,…,rn) = f(ri U {r1, r2,….,rn}) = U (ri & f(r1,r2, …, rn)), 当时应该是听懂了,不过现在看到这个笔记,又醉了。 (这货居然是我上课记的笔记 。。。。原创 2015-06-06 11:13:05 · 1854 阅读 · 0 评论 -
编程之美之数独求解器的C++实现方法
编程之美的第一章的第15节,讲的是构造数独,一开始拿到这个问题的确没有思路, 不过看了书中的介绍之后, 发现原来这个的求解思路和N皇后问题是一致的, 但是不知道为啥,反正一开始确实没有想到这个回溯法,知道是用回溯法求解之后,问题就变得容易了很多。 这里我们不打算实现数独的构造,相反的,我们实现一个数独求解器,以后妈妈再也不用担心我的数独了。当然求解器的思路和构造数独的思路一样,都是回溯法搜索,这里原创 2015-06-25 11:19:45 · 3198 阅读 · 0 评论 -
编程之美之买书问题
拿到这个问题,我的第一反应是用贪心算法,优先满足不同种类多的,这样打的折扣比价多。但是,看了书中的分析发现,*我们设定的贪心策略实际上是有问题的, ie 在买 5 + 3 本的时候会出错。 看到这里,书上说可以利用改进的贪心算法,感觉如果换了相应的折扣数量,可能又会有不同的结果了。因而,没有深入的研究下去。 既然,贪心算法不可行,那就用动态规划呗。 这里的动态规划思路很简单不过写起来有些复杂。原创 2015-06-12 19:11:33 · 1061 阅读 · 0 评论 -
编程之美之一摞烙饼的排序1
拿到这个问题,第一反应是利用分治的算法思想, 每次把当前的最大的一块烙饼放到指定位置,这样的思想非常简单,实现也非常容易。但是这只是提供了,问题的一个可行解,看完书中的内容之后发现,题目中要求的是最优化的输出过程,我们的这种方法显然没有考虑到优化<-_->!!其实,我觉得就算我看到了这个最优化输出的要求,估计也想不到书中的设计思想的了。过段时间,等自己把书中的思想忘掉之后,再看看能不能想到这种算法思原创 2015-06-11 16:42:49 · 986 阅读 · 1 评论 -
编程之美之将帅问题
思路很简单,但是要实现只用一个字节还是有些难度的,一开始我在试图寻找有没有什么方法可以定义出2bit的变量,因为如果我们可以定义出这样的变量,利用循环很容易就能求解了。可惜的是,没有能够找到 <-_->!!于是,只能硬着头皮写,为避免main过长,用到了两个宏定义,写完之后看到参考答案,感觉太巧妙了,瞬间学习了新技能,从答案来看 似乎只有在自定义数据类型的时候才能指定 char 这些数据类型在编译器原创 2015-06-10 17:44:31 · 893 阅读 · 0 评论 -
编程之美 之 让CPU占用率听你指挥
昨天在bbs上淘到了这本编程之美,顺手刷了第一章,非常有意思。第一章的要求是要控制CPU曲线,绘制出相应的形状。 拿到这个问题,我的第一反应是, 是不是有这么一个API,能在任务管理器上的相应区域直接绘制图形呢? 然后就去查找API, 可惜搜索能力不行,终于还是没有找到。 然后看书上的解释, 太棒了。 解决这道题目的核心是, CPU占用率的概念,应该是指 CPU忙的时间与总时间的比,他是一个平原创 2015-06-10 10:31:25 · 742 阅读 · 0 评论 -
编程之美:让CPU占用率曲线听你指挥
原文地址:编程之美:让CPU占用率曲线听你指挥题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:1. CPU的占用率固定在50%,为一条直线;2. CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100);3.转载 2015-06-09 22:13:28 · 740 阅读 · 0 评论 -
Leetcode 150. Evaluate Reverse Polish Notation
Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. Some examples: [“2”, “1”,原创 2016-03-19 15:30:12 · 338 阅读 · 0 评论 -
Leetcode 148. Sort List
题目描述: Sort a linked list in O(n log n) time using constant space complexity.我们知道对一个数组进行排序的时候, 时间复杂度取为O(nlogn)的一般就三种, 快排, 归并, 堆排序ps:这里盗用各种排序算法时间复杂度和空间复杂度表 博客中的一张图片, 描述的是以数组为基础的排序算法的时间和空间复杂度,以及稳定性表示情况原创 2016-03-20 17:56:42 · 596 阅读 · 0 评论 -
LeetCode 121, 122, 123. Best Time to Buy and Sell Stock i, ii, iii
1. 题目描述 Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (ie, buy one and sell one share原创 2016-04-02 14:00:35 · 530 阅读 · 0 评论 -
LeetCode 147. Insertion Sort List
题目描述: Sort a linked list using insertion sort.我们知道插入排序的基本思想, 和我们斗地主时候整理手牌的顺序的方法非常类似, ie, 前 i 个数组成了一个排序后的序列, 当插入第 i + 1 个数的时候, 只需要遍历这个数组找到新元素应该插入的位置, 就可以实现插入排序了。 当然, 由这个插入位置的而不同, 可以引发不同的插入排序方法的变种, 2原创 2016-03-21 16:06:17 · 418 阅读 · 0 评论 -
LeetCode 120. Triangle
1. 题目描述 Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below. For example, given the following triangle [ [2],原创 2016-04-03 23:39:27 · 392 阅读 · 0 评论 -
Leetcode 145. Binary Tree Postorder Traversal
题目描述: Given a binary tree, return the postorder traversal of its nodes’ values. For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3 return [3,2,1]. Not原创 2016-03-22 14:34:11 · 450 阅读 · 0 评论 -
LeetCode 118, 119. Pascal's Triangle i, ii
1. 题目描述 118 Given numRows, generate the first numRows of Pascal’s triangle. For example, given numRows = 5, Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4原创 2016-04-04 14:36:14 · 516 阅读 · 0 评论 -
LeetCode 114. Flatten Binary Tree to Linked List
1. 题目描述 Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5 / \ \ 3 4 6 The flattened tree should look like: 1 \原创 2016-04-05 08:35:48 · 532 阅读 · 0 评论