问题:给出一个字符串,输出所有可能的排列。全排列有多种算法,此处仅介绍常用的两种:字典序法和递归法。1、字典序法:如何计算字符串的下一个排列了?来考虑"926520"这个字符串,我们从后向前找第一双相邻的递增数字,"20"、"52"都是非递增的,"26 "即满足要求,称前一个数字2为替换数,替换数的...
分类:
编程语言 时间:
2014-06-27 20:49:45
阅读次数:
209
题解
题目要求是,有两种操作,从头取出一个字符,或者从尾取出一个字符,加到一个新的字符串末端,然后保证这个字符串是所有可能生成的字符串中,字典序排列最小的那个。依旧是贪心的想法,谁小我取谁即可。特殊判断两者相同的。一旦两者相同,那么就接着判断下一种,直到找到更小的为止。
另外需要注意两点,题目的输入很变态,要一个字母一行的输入,所以用cin或者用scanf(" %c", &ch)。cin不多说了,除了慢点其他没啥缺点。scanf中为何要加上一个空格呢?因为在格式串中,空格的意思是匹配输入中的所有换行、TAB...
分类:
其他好文 时间:
2014-06-25 08:46:12
阅读次数:
243
这题虽然简单但是挺不错的,因为过程很好,比较开发思维 和鼓励人,不像有些贪心太偏不好推反而让人厌烦
给出长度为N的字符串S,然后还有一个空串STR,每次有两个选择 1:删除S的头元素假加入STR中 2:删除S的尾元素加入STR中
是的STR字典序最小 并输出
开始可能没有什么顾虑的去想 每次比较S的头和尾元素 取小的那个删除并假如STR中,但是若S的头和尾元素一样的话这个方...
分类:
其他好文 时间:
2014-06-22 12:03:26
阅读次数:
148
题目链接:点击打开链接
题意:
给定长度为n的字符串s,常数k
显然s的子串一共有 n(n-1)/2 个
要求找到一个长度为n的字符串t,使得t对应位置的k个子串字典序>s
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 2505
#define mod 10...
分类:
其他好文 时间:
2014-06-22 09:01:38
阅读次数:
367
经典题目:给一个字符串,求字典序第k小的子串是什么。涉及子串问题,上自动机。首先我们可以用记忆化搜索的方法,求出到达某一个状态后,能产生多少个新状态。首先,到达这个状态就不走了,这肯定是一种状态,然后分别考虑后面的26个指针就好了。不过如果不记忆化肯定是要T的,而且如果用dp好像会有一点问题,因为状...
分类:
其他好文 时间:
2014-06-20 18:54:41
阅读次数:
163
这个方法 是超神教我的 --- 全排列的方法太多种了 感觉他这种写的 字典序法 是最简单的 最容易让人接受的而且在时间复杂度和空间复杂度上 都可以让人接受我待会将具体每步做法简要写一下...-> 我现在被一个 三角形给 深深烦死了 。。。。。。贴个代码 来 缓解下..... 1 #include ....
分类:
其他好文 时间:
2014-06-16 13:09:45
阅读次数:
190
判断欧拉路径是否存在及求出字典序最小的欧拉路径问题(如果存在)。将字符串的第一个字母和最后一个字母间连边,将字母看成点,最多可能有26个点(a-z),如果有欧拉路径,还要判断是否有欧拉回路,如果有,则需要找一个字典序最小的点开始生成这条链,否则以起点开始生成链,起点即为出度比入度大1的点。欧拉路径是...
分类:
其他好文 时间:
2014-06-15 11:51:18
阅读次数:
188
刚刚A了那题之后 想到以前自己的OJ那边有个整数划分...同时 tz 那边也有个很相似的 我是做了TZ的再做了自己OJ的 一起 放上链接 touch me touch me其实 我们解决的问题 应该主要是 字典序的输出和不能重复的输出就是说 1+1+2出现了 那么1+2+1就不应该出现 -- ...
分类:
其他好文 时间:
2014-06-14 22:49:58
阅读次数:
273
上一篇讲到生成字典序其实算法很简单,采用递归的思想,[1,2,3,4] 首先 是
1与2互换位置,[2,1,3,4],然后递归处理[1,3,4];当递归处理完之后;1再与3换位置,变成[3,2,1,4],然后接着处理[2,1,4],就是这样来处理;代码如下:
分类:
其他好文 时间:
2014-06-12 18:33:21
阅读次数:
189