[原创]【动态规划求解“键盘上字母分配”问题】
来源:互联网 发布:电话数据采集器 编辑:程序博客网 时间:2024/05/19 16:22
动态规划求解“键盘上字母分配”问题
一、问题背景
随着手机的普及,手机短信的交流方式也越来越流行(注:此处的短信主要指的是英文短信)。如下图1,就是标准手机键盘上用来打出26个字母(a~z)的按键布局。由于每个键上有多个字母,我们打字时常会遇到的情况是,某些常用字母可能需要按几下键才能打出来。比如字母“s”,需要按四次键才能选中。如果我们把字母按照图2的方式分配到各个按键上,那么打字就会方便一些,因为只要按两次键就可以选中“s”,虽然打出p、q需要的按键次数增加了,但是在英文中p、q的出现的频率比“s”小的多,于是这样做总的来说是值得的。
1
2
abc
abc
3
def
def
4
ghi
ghi
5
jkl
jkl
6
mno
mno
7
pqrs
pqrs
8
tuv
tuv
9
wxyz
wxyz
*
0
space
space
#
1
2
abcd
abcd
3
efg
efg
4
hijk
hijk
5
lm
lm
6
nopq
nopq
7
rs
rs
8
tuv
tuv
9
wxyz
wxyz
*
0
space
space
#
图1 图2
二、问题描述
类似地,现有L个按序排列的字母(广义,可包含其它字符,且第i个字母具有下标i,1 <= i <= L),K个按序排列的按键,(1 <= K <= L),以及每个字母使用的频率Fi 。将这L个字母依次分配到这K个键上,字母顺序固定不变,且每个键上至少分配一个字母,问怎样分配能使得在通常情况下打字的总代价最小?设Pi表示第i个字母在其所在按键上处于第Pi个位置(Pi >= 1,比如图1中“s”在按键7上的位置为4),则可以定义第i个字母的代价为:
Pricei=Fi * Pi。
三、问题分析与算法设计
详见以下word文档:
http://download1.csdn.net/down3/20070519/19140346679.doc
- [原创]【动态规划求解“键盘上字母分配”问题】
- 动态规划求解资源最优分配问题
- 动态规划算法求解上梯子问题
- 动态规划问题求解
- LCS问题求解-动态规划
- 动态规划问题分析求解
- 动态规划 资源分配问题
- 动态规划---LCS问题的求解(转载)
- 动态规划法求解距离字符串问题
- 动态规划求解编辑距离问题
- 动态规划求解编辑距离问题(转)
- 动态规划求解01背包问题
- 0-1背包问题,动态规划求解
- 动态规划求解编辑距离问题
- 01背包问题动态规划法求解
- 动态规划求解TSP(旅行商)问题
- 硬币找零问题(动态规划求解)
- 动态规划求解编辑距离问题
- [翻译]【移动Java的安全性分析】
- 第16界Jolt大奖图书《Why Programs Fail:系统化调试指南》3月28日全国发货!
- D3DX8指南02_Vertices
- C#中get和set访问器的解释
- BindingNavigator 的继承问题
- [原创]【动态规划求解“键盘上字母分配”问题】
- 关于RDLC报表的一些总结,希望对正在学习使用它的朋友有所帮助
- Struts1.2懒人就用LazyValidatorForm
- D3DX8指南03_Matrices
- 星空
- 设计模式之我见 浅谈寄存器(注册模式)
- 过去
- Eclipse 启动参数
- ANSI 和 Unicode 字符函数对照表