本文主要是介绍最小表示法模板附上几个习题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自:https://blog.csdn.net/snowy_smile/article/details/48033845
int MinimumRepresentation(string s)
{int i = 0, j = 1;int k = 0;int len = s.size();while(i < len && j < len && k < len){int t = s[(i + k) % len] - s[(j + k) % len];//比较俩个串的相对大小if(t == 0) //若相等,比较位置右移一位k++;else//若不同,则字典序大的那一位不可能是最终的答案,改变该指针位置{if(t > 0)//位置i的字典序大i += k + 1;else if(t < 0) //位置j的字典序大j += k + 1;if(i == j) //i和j位置要错开j++;k = 0; //重置匹配长度}}return i < j? i:j; //因为字典序大的位置被后移了,所以字典序小的位置就是最终的答案
}
P1709 隐藏口令Hidden Password
P1368 工艺 /【模板】最小表示法
这篇关于最小表示法模板附上几个习题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!