给你一串字符串,但是这串字符串是环形的,让你找个位置切开,使得它的字典序最小
要求:1、你需要去理解什么是字符串的字典序 2、输入一个字符串,它是首尾相连的环形 3、输出字典序最小的分割方法对应的字符串
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char str[20000];
int work(int m)
{
int i,j,l;
i=0; j=1;
while(i<m && j<m)
{
for(l=0;l<m;l++)
if(str[(i+l)%m]!=str[(j+l)%m]) break;
if(l>m) break;
if(str[(i+l)%m] > str[(j+l)%m])
i=i+l+1;
else
j=j+l+1;
if(i==j) j=i+1;
}
if(i<j) return i;
return j;
}
int main()
{
int text;
scanf("%d",&text);
while(text--)
{
scanf("%s",str);
printf("%d\n",work(strlen(str))+1);
}
return 0;
}
答案和解析会在次日公布
编写代码的时候,需要注意以下几点问题:
ctrl + s
\n
,不能错误写成/n
%d
对应整数%c
对应字符%f
对应实数网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!