题意:

      给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小。

思路:

      最小表示法的建档应用,最小表示法很好理解,就点贪心的意思,一开始我们枚举两个起点i,j然后谁大谁往后移动,相等则比较下一个,这样到最后取一个小的值就行了,时间复杂度是O(n)的,很好的小方法。


#include<stdio.h>
#include<string.h> char str[10005]; int GetMin(char *str)
{
int len = strlen(str);
int i = 0 ,j = 1 ,k = 0;
while(i < len && j < len && k < len)
{
int t = str[(i+k)%len] - str[(j+k)%len];
if(!t) k ++;
else
{
t > 0 ? i = i + k + 1 : j = j + k + 1;
if(i == j) j ++;
k = 0;
}
}
return i < j ? i : j;
} int main ()
{
int t;
scanf("%d" ,&t);
while(t--)
{
scanf("%s" ,str);
printf("%d\n" ,GetMin(str)+1);
}
return 0;
}

最新文章

  1. 在C语言中利用PCRE实现正则表达式
  2. 【Network】高性能 UDP 应该怎么做?
  3. C1000k 新思路:用户态 TCP/IP 协议栈
  4. Android数据缓存(转)
  5. Composer设置忽略版本匹配的方法
  6. ActiveMQ 使用
  7. Coursera台大机器学习课程笔记8 -- Linear Regression
  8. CDH中,如果管理CM中没有的属性
  9. 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解
  10. Hibernate中的继承映射
  11. [POJ 1787]Charlie&#39;s Change (动态规划)
  12. Qt... configure: error: Qt (&gt;= Qt 2.2.2) (headers…
  13. hdoj 2191(多重背包)
  14. js获取鼠标选中的文字
  15. C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
  16. 多个haproxy 之间跳转
  17. java基础IO删除文件夹文件
  18. C语言之函数和字符串
  19. 实现点击后创建div,若对div2秒无操作则将div隐藏,鼠标移上div让它不隐藏,移出div超过两秒则div隐藏
  20. java笔记:排错5:误删maven target:恢复不了,怎么再生成

热门文章

  1. LeetCode-宝石与石头
  2. HDOJ-6645(简单题+贪心+树)
  3. Chome 88如何正确隐藏 webdriver?
  4. rest framework renderers
  5. Python开发环境从零搭建-02-代码编辑器Sublime
  6. springboot2.0全局异常处理,文件上传过大会导致,方法被执行两次,并且连接被重置
  7. cocos 向左滚动公告
  8. apk、dex完整性验证
  9. mysql操作和详解
  10. Flutter 改善套娃地狱问题(仿喜马拉雅PC页面举例)