2015年7月28日 星期二

[UVA] 1584 - Circular Sequence

題意:
字串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;
}

沒有留言:

張貼留言