摘要: 报告人:侯建鹏报告日期:2012/4/161004 Max Sum Plus Plus解题思路:动态规划的思想。1.基本思路:首先,定义数组p[n],a[m][n].p[n]用来存储n个整数组成的序列.a[i][j]用来表示由前j项得到的含i个字段的最大值,且最后一个字段以p[j]项结尾。仔细想想,我们可以知道: a[i][j]=max(a[i][j-1]+p[j],a(i-1,t)+p[j]) 其中i-1<=t<=j-1.所求的最后结果为 max( a[m][j] ) 其中1<=j<=n.但是,我们会发现,当n非常大时,这个算法的时间复杂度和空间复杂度是非常高的,时间 阅读全文
posted @ 2012-04-16 21:43 LETTers 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 报告人:侯建鹏报告日期:2012/4/161003 大明A+B解题思路:模拟我的方法很简单,就是不停的模拟、模拟、再模拟。首先,把每个数都分成两部分,整数部分和小数部分,即a_h_count、a_l_count、b_h_count、b_l_count。相信只要细心一些都可以做出来的。然后,把模拟人工计算过程,先加小数位,加完之后,产生的对整数位的进位再和两个数的整数部分相加,最后把零去掉,输出就可以了。关键是:一定要细心!!!详见代码。#include<stdio.h>#include<string.h>#define N 400+10char a[N],b[N];in 阅读全文
posted @ 2012-04-16 21:41 LETTers 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 提交人:侯建鹏提交日期:2012/4/161002 Ignatius and the Princess III解题思路(一):动态规划先设置int p[N][N];Dp 方程为:p[i][j]=p[i][j-1]+p[i-j][j]。其中,p[i][j]表示将i分解成小于等于j个项的方法的种数。很明显,p[i][j]等于将i分解成小于等于j-1个项的种数(即p[i][j-1]),再加上,将它分解成j个项的方法的种数(即p[i-j][j]).下面重点来说一下为什么将i分解成j个项的方法的种数为p[i-j][j]。举例:将4分解成2个项的方法有两种,3、1和2、2.将这两组数字每个数字都减一,你会 阅读全文
posted @ 2012-04-16 21:38 LETTers 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 提交人:侯建鹏提交日期:2012/4/161001 Least Common Multiple 这道题求解的是几个数的最小公倍数,我的想法是先求前两个数的最小公倍数,再求的得到的这个数和第三个数的最小公倍数,以此类推。求解两个数a和b的最小公倍数d的方法:1、 用辗转相除法求出这两个数的最大公约数,记为c。2、 则最小公倍数d=(a/c)*b。特别注意的问题:为什么d=(a/c)*b而不是d=(a*b)/c? 因为a和b都是32bit的数字,如果先执行a*b很可能会超出32bit的存储范围而发生错误,所以先除再乘。(当然,如果你用的是__int64,可以忽略这个问题)#include<s 阅读全文
posted @ 2012-04-16 21:34 LETTers 阅读(152) 评论(0) 推荐(0) 编辑