所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

c语言统计个数函数题目,编程,谢谢?

发布时间:2020-04-12 09:12:40

资讯分类:c语言  函数  个数  编程  置换  算法  运算量
c语言统计个数函数题目,编程,谢谢?

海豚算法。按照互素性分圈移动。空间O(1), 时间O(N)。
举例: 1,2,3,4,5,6循环右移两位。
先移1->3->5->1这个圈,得到5,2,1,4,3,6。再移动 2->4->6->2这个圈,得到最终结果。分成两个圈的原因是(2, 6) =2。

说白了就是置换的分解。原题目相当于置换(345612),这个置换可以拆成(351)和(462)的乘积。

手机码字不易,代码自己写吧。
===========================
Note:
这个算法比 @bhuztez的方法运算量小,但运行起来不一定快,因为空间局部性不好(尤其是移动的位数较大时)。It is not cache friendly.

留言与评论(共有 0 条评论)
   
验证码:
Top