最小表示法

2022-06-19 07:15:06 字數 734 閱讀 8888

看到這題,我第一反應簡單啊,刷刷刷把**敲好交了一發

#include#include

intmain()

}puts(s3);

}return0;

}

不就比較字典序嘛,乙個strcmp就解決了,很快啊

然後果不其然

然後尋找大佬幫助,大佬的思路如下:

1.雙指標i,j;

2.通過"把已經比較過相等的字元跳過,從最後乙個相等的字元的下乙個字元開始比較字典序。"的方法降低時間複雜度;

3.然後就是i+k和j+k的三種情況,相等小於大於分別處理;

4.注意事項:i+k要取模防止溢位;i+k和j+k不相等時k=0;i和j相等時i++或者j++,要使它們指向兩個不同的位置;

5.最後取i和j裡小的那乙個。

放**:

#include#include

intmain()

else

if(s[(i+k)%l]>s[(j+k)%l])

}if(i

x=i;

else

x=j;

for(int i=0;i)

printf("\n

");}

return0;

}

ps:感謝大佬友情提示!

eof

最小表示法

最小表示法就是找出字串s的的迴圈同構串中字典序最小的乙個。那麼什麼是迴圈同構串呢。是 設s bcad 且s 是s 的迴圈同構的串。s 可以是 bcad 或者cadb,adbc,dbca 即在字串s中從i 0開始,從i迴圈到字串末尾,再從頭迴圈到i,所形成的字元就是s迴圈同構串。因為這樣的同構串不止乙...

最小表示法

最小表示法 思想 在字串迴圈同構問題中的應用 摘自周源的ppt 前言 最小表示法 比起動態規劃 貪心等思想,在當今競賽中似乎並不是很常見。但是在解決判斷 同構 一類問題中卻起著重要的作用。本文即將討論字串中的同構問題,如何巧妙地運用最小表示法來解題呢,讓我們繼續一起思考吧。到底什麼是迴圈同構的字串呢...

最小表示法

最小表示法與kmp演算法一樣都可以解決字串匹配問題,但效率更高,短,作用更大。最小表示法就是乙個字串的最小字典序。怎麼求乙個字串的最小字典序呢?首先將這個字串擴充套件一倍 建設存在d陣列裡 然後我們用三個指標i 0,j 1,k 0,來尋找最小字典序的開頭字母,為了優於kmp,我們要做到o n i表示...