孙小九
2015-8-25 15:23
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:文中提到的:#UPDATE@2013-08-21 14:27@zhengyuee 同学指出,由于 P[id] = mx,所以 S[id-mx] != S[id+mx],那么当 P[j] > mx - i 的时候,可以肯定 P[i] = mx - i ,不需要再继续匹配了。不过在具体实现的时候即使不考虑这一点,也只是多一次匹配(必然会fail),但是却要多加一个分支,所以上面的代码就不改了。是有问题的考虑到特殊情况,当mx-i == i-id的时候(即i正好是[id,mx]的中点的时候),不能肯定P[i] = mx - i,仍然需要扩大范围继续搜索
weico Email
2015-4-12 10:53
标题:最长递增子序列 O(NlogN)算法
内容:这个算法只能得出LIS的长度???
felix021 回复于 2015-4-14 08:51
能求出长度,求LIS本身就很容易了。
lonriyao Email
2015-4-4 15:28
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:int palinLen(const char *s)
{
    if (!s) {
        return 0;
    }
    char *front,*back, *head =s;
                        //这里的front back分别指向 s前后
                        //head记录s的开始位置 防止front访问非法元素
                       
    int len = 0, i ;    //len记录最后的长度 i只是记录一次的长度

    s++;                //第一个肯定不是 所以s加1
    while(*s){          //以s为中心进行 front back分别指向两边 查找
        front = s - 1;
        back =  s + 1;

        i = 0;          //从这里开始计数

        while((&*head != &*front) && *back  ){
                                    //这里有问题front可能访问非法区域
                                    //可以使用head指向的位置的地址来判断
                                    //是否front越界

            if(*front == *back){
                i++;
            }else{
                break;
            }
            back++;
            front--;
        }

        if (len < i) {
            len = i;
        }

        s++;
    }
    return len;
}

这个算法 行吗 ?? 这是我自己写的不知道 对不对
felix021 回复于 2015-4-10 20:11
多造几个case试试看喽
newwayy
2015-3-31 20:48
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:while (s[i + p[i]] == s[i - p[i]]) p[i]++;这句话是会下溢或者上溢, 除非限定了s中字符的取值范围(如alnum)。  否则, 不管构造多精美的卫兵字符, 都可能溢出,如:^#1#2# ==>  ^###^#  将1替换成#, 将2替换成^  下溢;#1#2#  ==> #####    将1、2都替换成#^1#2#  ==> ^##^#
felix021 回复于 2015-4-1 09:17
嗯,是的,严谨地说应该加上一个边界判断的条件,不过这个并不影响对算法的理解吧:)
sz8142 Email
2015-2-26 16:04
标题:把PE安装在U盘的第二个分区#2
内容:后来发现,还是两种方式最简单:方法1)一个工具搞定:ultraISO 9.6.2勾选“隐藏启动分区”的状态下写入PE的ISO方法2)TonPE的exe直接安装到U盘,安装方式选择第二种“写入到隐藏分区的Fbinst方式”。简单,直接,有效的两种方法,可惜TonPE3.3和4.0都不支持安装64位系统,要安装win7x64还要进入pe后修改好多东西才行,不方便,等聪哥的新作“微pe”了,据说今年春节就要出来的,先在跳票了
felix021 回复于 2015-2-26 18:22
用PE里自带的那个wim安装器就行了,我一直都是那么安装了。
sz8142 Email
2015-2-26 15:58
标题:把PE安装在U盘的第二个分区#2
内容:都是按您的步骤操作的,就是做不出来,各种问题:比如开机F12界面找不到NTLDR文件,后来另外一个PE的iso中可以找到NTLDR,但启动时还是提示错误,不知是不是“复制到当前分区”太直接(当然后来用bootice改了MGR),写入ISO可能会好点,但如果用ultraISO直接写入PE的iso的话,又会将两个U盘分区自动合为一个……
sz8142 Email
2015-2-26 00:23
标题:把PE安装在U盘的第二个分区#2
内容:收到,但新问题又有了:把TonPE_V3.3.iso里的内容导入第2分区(引导分区)中,是先解压iso文件,再把解压后的文件“复制文件到当前分区”没错吧?然后启动进F12页面时,显示“NTLDR is missing” = =
felix021 回复于 2015-2-26 14:01
是不是忘了把这个分区设置为活动分区?另外第三步也别忘了。
sz8142 Email
2015-2-23 15:01
标题:把PE安装在U盘的第二个分区#2
内容:【2. 用Disk Genius把TonPE_V3.3.iso里的内容导入到该分区(在分区参数右边有个“浏览文件”的TAB)】这一步不行啊,“浏览文件”只是为了浏览选中分区中的已有文件,而没有“导入”的动作,其他地方也看不到可以向分区中写入文件的选项,请问具体是怎样导入iso的呢?
felix021 回复于 2015-2-25 09:52
新版好像改成了“复制文件到当前分区”
maplainfly Email
2015-2-8 12:09
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:while (s[i + p[i]] == s[i - p[i]]) p[i]++;后面应该有个p[i]--吧?
felix021 回复于 2015-2-9 15:57
好像不用哟。
t.k Email
2015-1-3 10:07
标题:记一次蛋疼的性能调优
内容:好文。envy
大头
2014-11-13 04:19
标题:Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
内容:你的测试过了?    while (s[i + p[i]] == s[i - p[i]]) p[i]++;s[i+p[i]]可能会越界吧
felix021 回复于 2014-11-14 16:32
不会越界的
ctqmumu Email Homepage
2014-11-4 10:31
标题:量子效应代码
内容:uplook 这段代码在我的机器上貌似不能运行,locals().update(globals())执行后,locals()里还是没有a.python 2.7.7 & windows 7
felix021 回复于 2014-11-4 14:41
第五行那个print总还是可以跑到有输出的,6、7两行是否注释掉,会影响第5行的输出。
小流氓 Email Homepage
2014-10-18 20:18
标题:高精度整数除法  
内容:博主,你可以修改一下你的代碼縮進嗎,,這樣看著很不清楚
felix021 回复于 2014-10-19 01:21
好的。这大概是很早以前从别人那里转载过来的,回想起来估计自己也没认真看过呢。。
wen
2014-10-16 10:51
标题:最长递增子序列 O(NlogN)算法
内容:看到了Bug版本的二分查找--溢出问题。
felix021 回复于 2014-12-5 15:17
不要在意这些细节uplook
lovelucy Email Homepage
2014-10-14 13:39
标题:virtualbox虚拟机中nat和host only的网络“冲突”问题
内容:我发现你的网站也要挂代理才能看到了……
felix021 回复于 2014-10-14 14:39
不至于吧。。我的网站现在在DO新加坡机房啊,你从HK还需要翻墙??
分页: 10/164 第一页 上页 5 6 7 8 9 10 11 12 13 14 下页 最后页