practise,I know I am not good at algorithm,but I will Keen on it until...
摘要:此题是用来求两个字符串中最长非连续子字符串长度的题目,关键在于看出动态规划方程。稍微说一下动态规划方程的由来:假如输入的两个字符串分别为s1和s2,长度分别是len1和len2.我构造一个二维数组f[len1][len2].其中二维数组中的元素f[i][j]的意义是:字符串s1的子串s1[0.1.2....i]和字符串s2的子串s2[0.1.2....j]中的最长非连续子字符串长度。根据f数组的含...
阅读全文
摘要:归根结底是dp的题目。一开始写完代码提交时wa。一直以为我的是没有错误的,现在也没搞明白为什么我原来的那个会有错误。在论坛中取经后,在我原来的代码基础上加了一个用于跟踪路径的route数组。这样就可以保证肯定正确了。代码如下,注释参见code。[代码]其实排序部分完全可以用泛型算法如下:[代码]
阅读全文
摘要:大体意思是这样的,这里有n条直线,问这n条直线的交点有多少种情况,不考虑三条和三条以上直线交与一点的情况,即所有的交点都是二条直线相交得到的。题目的分析情况详细可参见杭电刘老师动态规划的讲义,大体意思就是先从n条直线中任选出一条直线,以这条直线为标准,把剩余的n-1条直线分为两类,一类就是与所选直线平行的直线,另一类就是与所选直线不平行的直线。n条直线的交点个数 = 第一类中直线的交点个数(0) ...
阅读全文
摘要:排序是数据处理中经常使用的一种重要运算,在很多种场合下都会用到。算法导论中第二部分重点讲述了排序的相关知识。在讲述和给出各种排序代码之前,先稍微说下排序算法的分类,好对于分类的各种算法有一个清晰的概念。排序算法的分类情况如下所示:一.基于比较的排序1. 插入排序直接插入排序,希尔排序2. 交换排序起泡排序,快速排序3. 选择排序直接选择排序,堆排序4. 归并排序二.非基于比较的排序计数排序,基数排...
阅读全文
摘要:链表是一种非常基础的数据结构,很多算法的实现都是基于链表的,熟悉链表的基本操作还是很有必要的。以下只是给出了链表的非常基础的操作,包括建立,排序,插入和删除等,本是我自己用来复习数据结构用的,贴出来仅供参考;[代码]
阅读全文
摘要:选择排序如下:[代码]冒泡排序如下:[代码]
阅读全文
摘要:非常基础题。就是判断整数大小。本来我还想需要判断那三个数是不是要用double什么的,结果用int就AC了。[代码]
阅读全文
摘要:不是很难的问题,但有两个问题,一大一小需要注意一下:大的问题是,看到这个题目,应该可以知道,对不每组不同的输入,会有些数据可以重复利用的,比如对于输入1 10和5 15来说,重复部分是5和10之间的数据。也就是说,我们在处理每组数据时,不必要对每组的数据逐一处理,聪明的做法就是预先整一个大的数组,把我们所需要的所有的数据存下来,用的话直接去取就可以了。这样可以避免大量重复的计算。小的问题就是,对于...
阅读全文
摘要:算法思想谈不上,就是一个统计然后排序的过程。a数组用来存放M个Design T-Shirt的最终得分情况。b数组用来存放前K个得分最高的Design T-Shirt的序号。然后再对b数组排下序就可以了。代码附在下面:[代码]
阅读全文
摘要:其实这个题目我们关注的是F(n)能不能被3整除的问题,所以会跟1005有点像,题目我们可以根据最终的目的稍微修改下的,我们要看的就是F(n)%3是否等于零的问题。 我们接下来关注一下这个序列,F(n)如下: F(0):7,F(1):11,F(2):18,F(3):29,F(4):47,F(5):76,F(6):123,F(7):199,F(8):322.... ...
阅读全文
摘要:本来这道题目不难的,可能是我想的太多了,或者是一开始的思路就不是很正确,导致花费了不少时间。 这两天脑子里都是Ta,真的什么都不想做,还是先把RayTracing搞定吧,对自己对五一也是一个比较好的交代,我要积极一些了。这个题目就是一个简单的字符串统计问题,把相邻相同的字符统计一下而已了,唯一需要注意的问题就是控制好边界问题就好了。不多说了,直接把代码贴在这里好了.......
阅读全文
摘要:题目本意是求一系列数的最小公倍数,我在博客中的一篇文章中已经写过一篇总结的文章,这里就不再赘述。本题需要注意的就是,在题目输入的要求中有一句话:All integers will be positive and lie within the range of a 32-bit integer.所以在求最小公倍数的函数中,要做些小手脚。经测试,如果按照以下方式写:int lcm(int a,int ...
阅读全文
摘要:恩,简单的数学题目。 简单推导如下: log10(n!) = log10(n*n-1*n-2......*2*1) = log10(n) + log10(n-1) + log10(n-2) + ...... + log10(2) + log10(1) log10(100) = 2;log10(200) = 2.301;log10(1000) = 3;log10(1500) ...
阅读全文
摘要:简单的数学题,注意格式控制就可以了。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std;int main(){ int N; int n,m; cin>>N; int ...
阅读全文
摘要:注意格式控制就可以了,没什么好说的题目。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namespace std;int main(){ unsigned int STEP,MOD;...
阅读全文
摘要:看了一遍题目,认为是简单题目,写了如下代码,结果WA. Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std;int sum_n(int n){ int sum = 0; wh...
阅读全文
摘要:题目中给出了公式,只需要把这个公式实现一下就可以了,用分函数求处阶乘,然后再在主函数中计算。 此题中唯一需要注意的就是格式控制,虽然题目中只给出了n从0~4的输出,但也不能妄下结论,一开始我用setprecision(10)来控制格式输出,但后来提交后发现wrong answer,重新查找后才发现原来是n=8时我的输出有误,在最后面少了一个'0'。 后来想了许久,发...
阅读全文
摘要:恩,简单的排序问题,以前的排序问题只是会牵扯一个数组,这次只不过是把两个数组结合起来排序而已。 为了以最小的F[i]得到最多的J[i],只需要按照F[i]/J[i]的值从大到小对两个数组重新排序下就可以了。然后再按照从大到小的数组去分配M pounds of cat food,直到food分配完或者所有的JavaBeans都被保护为止。AC代码如下: Code highli...
阅读全文