学习用矩阵做置换的过程很有趣,我遇到的置换问题最开始的思路就向矩阵发展了,然而很不幸,那题时间卡的紧,用矩阵是超时的做法(反正我没过)。不过我也意外的学习了这样的方法:
经典的置换矩阵:
比如:1 2 3 4 ---> 2 4 1 3
设转换矩阵是A。
给出置换方法:
表示第位置上的字符换到i位置上
所以
通过将置换操作分离出来成快速幂,最后和被操作序列做乘法,缩短时间。估计时间:O(nm) --> O(logn+m)
这是那一道题(注:下面的代码是超时的,我只是想用用矩阵模拟置换而已)
POJ 1026 Cipher
输入: 10 4 5 3 7 2 8 1 6 10 9 1 Hello Bob 1995 CERC
解释:
n