Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:一个O(N)的算法, 不过老是WA, 大家帮忙看一下, 多谢In Reply To:一个O(N)的算法, 不过老是WA, 大家帮忙看一下, 多谢 Posted by:Wonlay at 2006-09-08 12:24:49 不好意思啊, 我的vi中文支持有问题, 写能英文注释了. 算法大概是: 一个n长的DNA串的逆续最多有n*(n-1)个(倒续的情况). 所以, 定义n*(n-1)长的一个数组, 算出一个DNA的逆续就把 数组下标为该逆续的值指向这个DNA 而同一个逆续值会有多个(<=m个)DNA指向, 我就定义那个数组 是m*n*(n-1)个, 以m为单位分开, 逆续为0的都放到前m个处, 1的 就放到m到2m处, 等等 这样只要处理一遍DNA, 然后按这个数组的顺续将它们输出就行了, 复杂度O(m). 而计算一个DNA的逆续, 我是把所有出现过的字符的个数分别记一下(记到了c[]里), 到下一个字符时, 它产生的逆续数正好是比它大的那些字符的个数. 复杂度O(n) 所以总体复杂度是O(m+n)也就是我说的O(N). 不过程序提上去老是WA, 不知道哪里写错了. Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator