看到這題,我第一反應簡單啊,刷刷刷把**敲好交了一發
#include#include不就比較字典序嘛,乙個strcmp就解決了,很快啊intmain()
}puts(s3);
}return0;
}
然後果不其然
然後尋找大佬幫助,大佬的思路如下:
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#includeps:感謝大佬友情提示!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;
}
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表示...