scilab - Scialb 中的回文算法
问题描述
你能帮我在 Scilab 中构建一个算法,在 n 个元素的零一序列中搜索最长的回文。输出应给出回文的长度和开始搜索序列的字符串中的位置。
例子:对于 111010101100,最长的回文是 110101011。回文的长度是 9,字符串中开始序列的位置是 2。
解决方案
这是上述评论中提出的算法的可能实现(对于 n>1):
x = "10100111000";
n = length(x);
lgmax = 0;
pos = 0;
for i = 1: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))
推荐阅读
- html - CSS Grid中的行内出现意外的空白
- html - 文本对齐和绝对定位
- python - How to use validator in Django depending on the database data?
- vb.net - VBS 未多次发送“GET”请求
- unit-testing - Spock unclear assertion behavior
- ios - 如何在 iOS 推送通知中显示卢比符号 (₹)?
- concurrency - Concurrency Thread Group Showing more Samples then define
- api - Bloomberg API - 如何获取用户订阅的用户权利
- eclipse - 如何将我的 Github 项目添加到 Eclipse
- c++ - usleep inside loop 耗时太长