Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:一个O(N)的算法, 不过老是WA, 大家帮忙看一下, 多谢

Posted by Wonlay at 2006-09-08 14:37:23 on Problem 1007
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator