题意:
有n个测试数据。每个测试数据第一个数t,表示字符串的长度。接下来输入字符串。你可以指定一个长度,然后从第一个字符开始反转该长度的字符串,直到最后一个字符反转完毕。问指定的长度为多少时,可以得到字典序最小的字符串。输出字典序最小的字符串以及指定的长度的大小。
思路:
因为数据给的很小,所以我们直接模拟的做就行了。
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
void solve()
{
cin>>n>>s;
string curr = "";
for(int i=0;i<n;i++)
curr+="z";
int c=1;
for(int i=1;i<=n;i++)
{
string x="";
if((n-i)%2==0)
{
x+=s.substr(i-1);
string y=s.substr(0,i-1);
reverse(all(y));
x+=y;
}
else
{
x+=s.substr(i-1);
x+=s.substr(0,i-1);
}
if(x<curr)curr=x,c=i;
}
cout<<curr<<endl<<c;
}
int main()
{
//fio;
int t=1;
cin>>t;
while(t--)
{
solve();
cout<<endl;
}
return 0;
}
```c