void-man

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

2011年5月8日

摘要: 这两种办法在文章部分已经都有提及,基本思想都是大数相加,一种是字符串相加,一种是数组保存位数第一种,字符串相加直接用一个字符串相加函数,计算结果保存到字符串数组中View Code 1 string operator +(const string s1,const string s2) 2 { 3 string s; 4 int l1=s1.size(),l2=s2.size(),i,j; 5 int a[1100]={0},k=0; 6 for(i=l1-1,j=l2-1;i>=0||j>=0;i--,j--,k++) 7 { 8 if(i>=0) 9 a[k]+=(s1[ 阅读全文
posted @ 2011-05-08 15:38 void-man 阅读(1094) 评论(0) 推荐(0)

摘要: 此类问题一般常用的有两种算法,时间复杂度分别是O(n^2)和O(nlogn)第一种,普通算法,用一个标记数组标记包括当前数的最长序列的长度,然后往前递归寻找,此类方法这里不多说了文章的dp问题里已经用过多次了下面着重介绍一下一种省时但是不常用的算法,整体思想是DP+二分搜索,用一个b[k]=m 来标记k长度的最长序列下,最小的数是m,比如有一序列 5 3 7 4首先b[1]=5,初始化长度为1的序列就是第一个数,接下来到3的时候,3独立的长度为1的序列小于5,所以b[1]=3,那么b[2]=4 因为长度为2的序列有两个5-7,3-7,3-4,期中序列最大的数最小的就是4了因此,寻找大于当前数的 阅读全文
posted @ 2011-05-08 14:16 void-man 阅读(577) 评论(0) 推荐(1)