Scialb中的回文算法

问题描述 投票:-1回答:1

您能帮我在Scilab中构建一种算法,该算法搜索n-元素的零一序列中最长的回文。应为输出指定回文的长度和在开始搜索序列的字符串中的位置。

例如:对于111010101100,最长回文为110101011。回文的长度为9,并且在序列中字符串的位置为2。

scilab
1个回答
0
投票

这是上面注释中提出的算法的可能实现:

x = "10100111000";
n = length(x);
lgmax = 0;
pos = 0;

for i = 2:n-1
    // k=0: odd sequence, k=1: even sequence
    for k = 0:1
        j=1;
        while j <= min(i-1+k,n-i) && part(x,i+j) == part(x,i-j+k)
            j = j+1;
        end
        if 2*j-1-k > lgmax
            lgmax = 2*j-1-k;
            pos = i-j+1+k;
        end
     end
 end

 disp(part(x,pos:pos+lgmax-1))
© www.soinside.com 2019 - 2024. All rights reserved.