poj1509最小表示法
2024-10-19 06:38:54
题意:
给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小。
思路:
最小表示法的建档应用,最小表示法很好理解,就点贪心的意思,一开始我们枚举两个起点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;
}
最新文章
- 在C语言中利用PCRE实现正则表达式
- 【Network】高性能 UDP 应该怎么做?
- C1000k 新思路:用户态 TCP/IP 协议栈
- Android数据缓存(转)
- Composer设置忽略版本匹配的方法
- ActiveMQ 使用
- Coursera台大机器学习课程笔记8 -- Linear Regression
- CDH中,如果管理CM中没有的属性
- 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解
- Hibernate中的继承映射
- [POJ 1787]Charlie&#39;s Change (动态规划)
- Qt... configure: error: Qt (>;= Qt 2.2.2) (headers…
- hdoj 2191(多重背包)
- js获取鼠标选中的文字
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
- 多个haproxy 之间跳转
- java基础IO删除文件夹文件
- C语言之函数和字符串
- 实现点击后创建div,若对div2秒无操作则将div隐藏,鼠标移上div让它不隐藏,移出div超过两秒则div隐藏
- java笔记:排错5:误删maven target:恢复不了,怎么再生成