本人是小白,還請大神多多指教~
例子: 有乙個長度為 n=3 的字串 abc, 而環狀的abc可以表示成 abc、bca、cab
如果程式要在 abc裡面獲取到 abc、bca、cab ,則
在a(包含a)開始向後讀取3個字串
在b(包含b)開始向後讀取3個字串
在c(包含c)開始向後讀取3個字串
b和c開始向後讀取3個字元,讀取超出陣列範圍怎麼辦?
可以看成為 abcabc 從第乙個字元index=0(index遞增)開始讀取,每次讀取長度len=3的字串 就可以讀取到abc、bca、cab
0 1 2 3 4 5
a b c a b c
例如 從c開始向後讀取3個字元,讀取到 c+1=3 的時候是只要 3 % 3 =0(即a的索引值)
讀取到 c+2=4 的時候是只要 4 % 3 =1(即b的索引值)
這樣就可以繼續向後讀取環狀的字元了
可以看出 索引超過字元長度後 可以通過 (索引值%字串長度) 得到前面的字元索引
#includeusing namespace std;
char s[100];
int n;
bool judge(int p,int q)
int main()
cout << minindex;
return 0;
}
C 環狀序列
長度為n的環狀串有n種表示法,分別為從某個位置開始順時針得到。如abcd bcda cdab dabc 在這些表示法中,字典序最小的稱為 最小表示 輸入乙個長度為n n 100 的環狀dna串 只包含a c g t這4種字元 的一種表 示法,你的任務是輸出該環狀串的最小表示。例如,ctcc的最小表示...
環狀序列,ACM ICPC,UVa1584
長度為n的環狀串有n種表示方法,分別為從某個位置開始順時針得到,在這些排列中字典順序最小的稱 最小表示 如ctcc的最小表示為ccct,cgagtcagct的最小表示為agctcgagtc。思路,其實就是定義兩個int變數分別記錄陣列的下座標,乙個用於迴圈,乙個用於記錄當前開始最小的字串的首下座標,...
環狀序列(UVa1584)
題目具體描述見 c 11 如下 1 include2 include 3 define maxn 103 4using namespace std 5char s maxn 6 c 中注意避免使用less作為自定義函式,因為會和標準庫中的less函式重名,或者使用不同的空間域來界定 7bool le...