随笔分类 - 算法与题目积累
积累算法与题目,希望积累有一天可以发光
摘要:例题一:输出前m大的数: 描述给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输出。输入第一行包含一个整数n,表示数组的大小。n < 100000。 第二行包含n个整数,表示数组的元素,整数之间以一个空格分开。每个整数的绝对值不超过100000000。 第三行包含一个整数m。m < n
阅读全文
摘要:我之前有写过相关快速排序的,但是因为当时对递归和分治的思维还是不够熟悉。所以对快速排序一知半解,现在再来做一个总结: 首先快速排序步骤如下: 1,设k = a[0],将k挪到适当的位置,使得比k小的元素在k的左边,比k大的元素在k的右边,和k是相等的,不关心在k左右均可。 2,对k的左边进行快速排序
阅读全文
摘要:一,首先先介绍分治的思想: 把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成, 或只需要选择一部完成,完成后的这一个或几个部分的结果,实现整个任务的完成。 下面来举个例子:16个硬币,有可能有一枚假币,假币比真币轻。有一天平,用最少称量次数确定有没有假币,若有的
阅读全文
摘要:例题1: 1,这题第一思想其实就是用枚举,但是这个题目的数据规模太大了,所以肯定不能否则复杂度会达到百亿,这种规模一般来说在所有的程序设计竞赛中是肯定过不了的。但是这个思维也说一下把,其实就是用两次循环,分开来遍历,如果相加为m的话,就ok了。 2,其实就是先对数组进行排序。先找到一个数,剩下一个数
阅读全文
摘要:来一题比较有难度的题目:这题同样是采用问题分解的办法,看看能不能得到一个递归式。 自己总结一遍就是一开始有n个数算24,往n个数里面取出来2个先进行计算,算出来的结果存到一个数组里面去,现在就变成 了n-1个数算24.这样很明显就发现了递归的关系了。 这里有一个注意点就是浮点数算相等的话不是使用 =
阅读全文
摘要:这题和上一题一样都是将问题分解为若干个子问题,这题难度会大一点,递归关系自己想的话不是那么好想: 这题和上一题一样,先找递推式,但是这题的递推式会稍微难一点,有两种情况,第一种情况是盘子的数量比苹果的数量多的情况,如果苹果少的话,就相当于最多只能i个盘子每个盘子放1个苹果,剩下的空盘子就不管了。第二
阅读全文
摘要:使用递归将问题分成规模更小的子问题(简单): #include <iostream> using namespace std; int n; int stairs(int n){ if(n<0){ return 0; } if(n == 0){ return 1; } return stairs(n
阅读全文
摘要:下面是代码实现 #include <iostream> #include <cstring> #include <cstdlib> using namespace std; int factor_value(); int term_value(); int expression_value(); i
阅读全文
摘要:但是一般来说逆波兰表达式应该是后缀表达式才对,前缀应该是波兰表达式。但是题目既然定义了那就说是逆波兰把。 首先就是逆波兰表达式的定义了。1,一个数是一个逆波兰表达式,值为该数(注意)。2,“运算符 逆波兰表达式 逆波兰表达式”表达式的值为这个两个逆波兰表达式的值的运算的结果。 你看逆波兰表达式由逆波
阅读全文
摘要:解释一下:在本题中每个皇后不能在同一行,同一列,同一斜线,否则就会互相攻击。最开始这题是八皇后问题,但是做八皇后第一想法肯定是用暴搜,做八个循环,但是如果是n皇后的话肯定就不能用这个方法了,因为有几个皇后不确定。 代码: 1 #include <iostream> 2 #include <cmath
阅读全文
摘要:熄灯问题(poj 1222)——难 http://poj.org/problem?id=1222 问题描述: 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄
阅读全文
摘要:注意怎么尽可能减少枚举的个数和范围 例题一:生理周期 解题思路:这题还是比较简单的,很容易就可以想到用枚举的方式解题,条件其实就是枚举每一天,看看距离所给高峰的距离能不能同时%23 28 33 ==0就好了。但是如果这样设计的话很明显就要用3重循环时间复杂度很高,如果给的数据很大的话很有可能会溢出,
阅读全文

浙公网安备 33010602011771号