题意翻译
长度为nn 的环状串有nn 种表示法,分别为从某个位置开始顺时针得到的。在环状串的所有表示法中,字典序最小的称为“最小表示”。
输入一个长度为nn 的环状DNA串(只包含AA ,CC ,GG ,TT 这四种字符)的一种表示法,你的任务是输出该环状串的最小表示。
题目描述
PDF
输入输出格式
输入格式:
输出格式:
输入输出样例
暂无测试点
#include<bits/stdc++.h>
using namespace std;
int n,len;
string s;
//比较p开始是否小于q开始
bool les(int p,int q)
{
for(int j=0;j<len;j++)
if(s[p+j]!=s[q+j])
return s[p+j]<s[q+j];
return 0;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s;
len=s.length();
string mins=s;
int ans=0;
s+=s;
for(int j=1;j<len;j++)
if(les(j,ans))
ans=j;
mins=s.substr(ans,len);
cout<<mins<<endl;
}
return 0;
}