字符序问题(1)
来源:互联网 发布:淘宝买家如何升级星级 编辑:程序博客网 时间:2024/05/21 10:49
问题描述:
在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A 由26 个小写英文字母组成A={a,b,…,z}。该字母表产生的升序字符串是指字符串中字母按照从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1 次。例如,a,b,ab,bc,xyz 等字符串都是升序字符串。现在对字母表A 产生的所有长度不超过6 的升序字符串按照字典序排列并编码如下。 1 2 …
26 27 28 … a b …
z ab ac …
对任意长度不超过6 的升序字符串,迅速计算出它在上述字典中的编码。
编程任务:
对于给定的长度不超过6 的升序字符串,编程计算出它在上述字典中的编码。
数据输入:
输入数据由文件名为input.txt 的文本文件提供文件的第一行是一个正整数k,表示接下来共有k 行接下来的k 行中,每行给出一个字符串。
结果输出:
程序运行结束时,将计算结果输出到文件output.txt 中。文件共有k 行,每行对应于一
个字符串的编码。
输入文件示例 输出文件示例
—————-分隔线—————–
问题解答思路:由减至难的找规律,从中找到最基本且普适的规律。关键词:升序,不重复。
一.先找出固定长度的字符串有多少种编码可能
1.当字符串长度为1时:令字符串为A:A位置所有的可能为从a~z 合计26种。此为最简单的情况。
2。当字符串长度为2时:令字符串为AB(后面同理,不再重复此句):A位置上有a~x合计25种可能(不含有这种可能),当A位置上为a时:B位置上有b~z合计25种可能。同理:当A位置上的数字分别为b~x时,B位置上分别由24,23,22………..3,2,1种可能.所以当字符长度为2时,所有的可能为: ∑25i=1i .
3.当字符串长度为3时(ABC):在A位置上有a~x合计24可能,当A位置上为a时:BC位置有 ∑24i=1i 种可能(分析方法与字符串长度为2时相同),同理当A位置为b时:BC位置有 ∑23i=1i 种可能,依次如此分析,可得字符串长度为3时所有的可能性有:∑24j=1∑25−ji=1i 种。
以下分析方式相同:
4.字符串长度为4时:可能性:共∑23k=1∑24−kj=1∑25−ji=1i 种。
5.字符串长度为5时:可能性:共∑22m=1∑23−mk=1∑24−kj=1∑25−ji=1i 种。
二.计算出该字符串在该长度中的编号。
有了上面的基础,后面的容易理解的多了。以实际例子来举例。如此字符串为cdef。
则在长度为4的字符串中的位置为:
分析此式子:
三.计算出字符串的编码
编码结果(以cdef为例):26+
即:字符串长度为1的所有可能+字符串长度为二的所有可能+字符串长度为三的所有可能+其在长度为4的字符串中的排位。
四.代码
额。忽略,不重要(>.<其实是写不出来)。有几个关键的地方我还不能处理,也不想查现成的代码。后面能力够了把代码写在博客里。以后会写(2)来讲如何写代码
—————-分隔线—————–
如其中有问题,欢迎指正,共同进步。
- 字符序问题(1)
- 字符流(缓冲区问题)
- 字符问题
- URL特殊字符问题1例
- Qt中字符编码问题-1
- 文件加密问题(中文字符)
- JAVA中文字符编码问题(转)
- c字符输入相关问题(缓冲区)
- (94)字符编码、联通问题
- 变位词问题(字符的排列)
- 字符编码问题总结(来源网上)
- 关于url中特殊字符的问题(url不安全字符和保留字符)
- 易错1(字符)
- 字符编码问题总结(11年3月1日)
- cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
- Java 字符编码问题
- Java 字符编码问题
- oracle 字符问题!
- HDOJ 5358 First One 暴力
- 花生壳+tomact 将个人电脑搭建服务器
- JavaEE 新玩法
- (一一一)图文混排基础 -利用正则分割和拼接属性字符串
- Java 插件工程开发的概念
- 字符序问题(1)
- Java集合和数组的排序方式总结
- 第79讲:单例深入讲解及单例背后的链式表达式学习笔记
- python select模块实现并发
- 1371 - Period
- volatile、ThreadLocal、synchronized等3个关键字区别
- 黑马程序员--集合List总结--java
- 递归:多种方法实现进制转换,实现系统原函数_itoa()
- hdu 1205 吃糖果(鸽巢原理)