由五笔编码联想到的字母排序问题
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 12:21:32
由五笔编码联想到的字母排序问题
z共26个字母,以1~4个组合,按字母顺序排序,如下所示:
a
aa
aaa
aaaa
aaab
aaac
……
aaaz
aab
aaba
aabc
……
aazz
ab
aba
abaa
……
azzz
b
ba
baa
baaa
……
zzzz
求其中任一组合的序号,比如,xyzd是第几个?
最好用式子表达出来,也可以用程序代码.
z共26个字母,以1~4个组合,按字母顺序排序,如下所示:
a
aa
aaa
aaaa
aaab
aaac
……
aaaz
aab
aaba
aabc
……
aazz
ab
aba
abaa
……
azzz
b
ba
baa
baaa
……
zzzz
求其中任一组合的序号,比如,xyzd是第几个?
最好用式子表达出来,也可以用程序代码.
总的来说就是一个进制转化,外加一些细节处理.我们先看个类似的例子:
0
00
000
0000
0001
0002
……
0009
001——进1位的时候会多1个数出来
0010
……
0019
……
0099
01
010——进2位的时候会多2个数出来
0100
0999
1
10
100——进3位的时候会多3个数出来
1000——其实这里可以从0999转过来的,这是和单纯进制的相似处
1001
……
现在有点感觉了吗?
现在来算xyzd,把它看成26进制的数来计算,a表示0,z表示25,26进1,xyzd记作(23)(24)(25)(3),以及额外产生的数,这些数正好包括:23,00~(23)(24),000~(23)(24)(25)计算:
(23x26^3+24x26^2+25x26+3+1)+(23+1)+(23x26+24+1)+(23x26^2+24x26+25+1)
欢迎来讨论
再问: 谢谢!我最初的数学建模是:建立4位27进制数(空为0,a为1,b为2……z为27),其首位不为0且中间不为0(仅允许末尾含0)。然后计算排序。计算方法是:用待计算数的序号减去中间所有非法数的总数。这个方法求非法数的数目的时候非常麻烦。 您用的26进制计算方法给我了一个新思路。用排列数加额外附加数的方法,计算很简单。经验证确实正确。 为何不用百度账号答题呢?我会给您加分啊。
再答: 隐藏回答就不能加分吗?也没关系,对你有帮助,采纳就好了。 可以加好友吗?才用这个一个月,还不知道怎么加好友,呵呵!
0
00
000
0000
0001
0002
……
0009
001——进1位的时候会多1个数出来
0010
……
0019
……
0099
01
010——进2位的时候会多2个数出来
0100
0999
1
10
100——进3位的时候会多3个数出来
1000——其实这里可以从0999转过来的,这是和单纯进制的相似处
1001
……
现在有点感觉了吗?
现在来算xyzd,把它看成26进制的数来计算,a表示0,z表示25,26进1,xyzd记作(23)(24)(25)(3),以及额外产生的数,这些数正好包括:23,00~(23)(24),000~(23)(24)(25)计算:
(23x26^3+24x26^2+25x26+3+1)+(23+1)+(23x26+24+1)+(23x26^2+24x26+25+1)
欢迎来讨论
再问: 谢谢!我最初的数学建模是:建立4位27进制数(空为0,a为1,b为2……z为27),其首位不为0且中间不为0(仅允许末尾含0)。然后计算排序。计算方法是:用待计算数的序号减去中间所有非法数的总数。这个方法求非法数的数目的时候非常麻烦。 您用的26进制计算方法给我了一个新思路。用排列数加额外附加数的方法,计算很简单。经验证确实正确。 为何不用百度账号答题呢?我会给您加分啊。
再答: 隐藏回答就不能加分吗?也没关系,对你有帮助,采纳就好了。 可以加好友吗?才用这个一个月,还不知道怎么加好友,呵呵!