最小表示法

2021-08-04 22:13:32 字數 898 閱讀 9572

這個講的還行

how many hdu - 2609

題意:給你很多個字串,然後他們可以旋轉成為相同的字串,就是同乙個字串,問有多少個不同的字串

分析:我們要把這些字串都變成相同的一種,這樣,我們就可以直接知道有多個不同的字串了。

最小表示法,將乙個字串旋轉成為字典序最小的字串

這個題就是把每個字串都用最小表示法,然後set來看一下有多個不同的字串

注意set 裡面不要放陣列。。比如set < char * > 或者set < int * >

#include 

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 110;

char s[maxn];

set set;

int sum=0;

void getminsub(char *s)

else

if(s[ni]>s[nj])

else k++;

if(i==j) j++;

}i=min(i,j);

string ans="";

int h=0;

while(hif(i>=len) i-=len;

ans+=s[i];

h++;

i++;

}if(set.count(ans)==0)

return ;

}int main()

printf("%d\n",sum);

}return

0;}

最小表示法

最小表示法就是找出字串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表示...