題目傳送門:
題意:
給出n個01串,通過迴圈可以相同的串算一類,求一共有幾類串。
思路:
暴力,把所有串都變成最小表示法,然後排個序掃一遍就行了。
ac code:
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 1e2 + 10;
///string str[maxn];
char str[maxn],str1[maxn];
int min_rep(char *s)
if(k == len )
if(s[(i + k) % len] > s[(j + k) % len])else
}return min(i ,j);
} int main()
//printf("em %s\n",str1);
string s1(str1);//將char轉化為string
st.push_back(s1);
}sort(st.begin(),st.end());//按照字典序排序
int ans = 1;
for(int i = 1;i < n;++i)
}printf("%d\n",ans);
}
return
0;}
HDU 2609 How many (最小表示法)
題意 n 10000個字 符串,l 100,可以 滾動,如 果滾動後 相同,算 同乙個,問有多少 個不同的 串 分析 最小 表示法表 示一下每 個字串 然後丟 到set 裡,輸出 個數就好 了 created by taosama on 2015 10 30 pragma comment linke...
HDU 2609 How many 最小表示法
題目大意 有n個有01組成的字串,每個字串都代表乙個項鍊,那麼該字串就是乙個環狀的結構,求可以經過迴圈旋轉,最後不同的串有多少個。演算法思想 將每個字串轉換成最小串,然後放在set裡面去重。最小表示法 迴圈字串的最小表示法的問題可以這樣描述 對於乙個字串s,求s的迴圈的同構字串s 中字典序最小的乙個...
HDU2609 How many(最小表示法)
題意 給n個長度100以內的字串,如果兩個字串迴圈移位可以得到相等的結果,那麼就認為這兩個字串相等。求這n個字串一共包含多少個不同的字串。思路 顯然每個串迴圈移位得到的最小值是一定的,可以先用最小表示法處理出每個字串的最小值,排個序,然後只需比較相鄰的兩個串是否相同就行了。include inclu...