字串ACGTA 以各個位置為頭的字串分別為
ACGTA
CGTAA
GTAAC
TAACG
AACGT
取字典序最小的就是所求。
題解:
簡單的字串比大小,字串長度不長(<100),
先設定初始字串為mini,表示字典序最小
假設字串長度L
將字串分割成前 i 個字元 與後 L-i 個字元,
產生新字串為後 L-i 個字元 + 前 i 個字元組成,
與mini做比較,更新mini ~
/* 20150728
* hanting
* UVa 1584 - Circular Sequence
* C++
*/
#include <iostream>
using namespace std;
int main()
{
int N;
cin>>N;
while(N--)
{
string str;
cin>>str;
string mini=str;
for(int i=0;i<str.size();i++)
{
string tmp=str.substr(i+1)+str.substr(0,i+1);
if(tmp<mini) mini=tmp;
}
cout<<mini<<endl;
}
return 0;
}
沒有留言:
張貼留言