有人吗???SOS,求助题目啊!!!
pascal吧
全部回复
仅看楼主
level 3
墨森莉0kW 楼主
题目描述 Description
(宁波2005第四题)问题描述]二十世纪末科学界最重大的事,要算是人类基因组计划的初稿提前完成。这个计划很主要的一部分,就是决定人类一个细胞内,长度约三十亿的DNA序列(注:DNA序列可视为由A、C、G和T等四种字母所组成的序列)。电脑分析在后基因组时代将扮演非常关键的角色。一项很基本的分析是看看DNA序列中一个特定长度的各种组合之出现频率。例如,我们会想知道每个长度为5的组合在DNA序列中的出现频率,也就是说,AAAAA出现几次、AAAAC出现几次、AAAAG出现几次、…、TTTTT出现几次。出现次数比较多或比较少的组合可能就有某些特定的意义。请撰写一个程序,输入一个DNA序列,然后输出长度为5的组合中出现最多的次数。例如,输入的DNA序列为ACGTACGTACGTCGTACACGTAC,因为CGTAC共出现4次,而这是长度为5的组合在这个序列中出现次数最多的,所以程序的输出为4。本题输入文件共包含若干行,用来表示一个DNA序列(总长度在500000之内),其中输入档的最后一行的最后一个字符以数字0作为结束;输出文件共包含一行,其内容是一个整数,即长度为5的组合中出现最多的次数
样例输入 Sample Input
样例输出 Sample Output
4
var str,st,s,jy,ls:ansistring;l,i,max,p:longint;i1,i2,i3,i4,i5:char;
begin
while str<>'0' do
begin
readln(str);
st:=st+str;
end;
l:=length(st);
for i:=1 to l do
case st[i] of
'A':s:=s+'1';
'C':s:=s+'2';
'G':s:=s+'3';
'T':s:=s+'4';
end;
max:=-maxlongint;
for i1:='1' to '4' do
for i2:='1' to '4' do
for i3:='1' to '4' do
for i4:='1' to '4' do
for i5:='1' to '4' do
begin
jy:=i1+i2+i3+i4+i5;
ls:=s;
while pos(jy,ls)>0 do
begin
delete(ls,pos(jy,ls),1);
inc(p);
end;
if p>max then max:=p;
p:=0;
end;
writeln(max);
end.
↑ ↑ ↑ ↑ ↑
我的程序
2017年06月05日 11点06分 1
level 3
墨森莉0kW 楼主
新人贴,没人理?
2017年06月07日 11点06分 3
level 1
宝宝不会啊
2017年06月07日 13点06分 5
level 1
有道题,你能帮我瞅瞅么
2017年06月07日 13点06分 6
level 13
[汗]会算时间复杂度吗,O(n^2*4^5)肯定会TLE,去掉一个n也还得-Owys一下
这题只要把n-4个长度为5的字符串拖出来,给对应字符串的出现次数加个1,最后扫一遍取最大就行了,复杂度是线性的
2017年06月08日 12点06分 7
level 3
墨森莉0kW 楼主
我好了,那谁,把题给我!
2017年06月19日 10点06分 8
1