特长生模拟 DNA排序(逆序对+快排)
来源:互联网 发布:asp手机考试系统源码 编辑:程序博客网 时间:2024/05/21 08:36
题2、DNA排序
问题描述
逆序对的定义如下:
有一个数列{an},对于任意的ai
var st:array[0..20000] of string; nu,a:array[0..20000] of longint; c:array['A'..'Z'] of longint; s:string; i,j,n,l:longint;procedure qsort(l,r:longint);var i,j,k,k1:longint;begin if l>=r then exit; i:=l;j:=r; k:=a[(l+r) div 2]; k1:=nu[(l+r) div 2]; repeat while (a[i]<k) or ((a[i]=k) and (nu[i]<k1)) do inc(i); while (a[j]>k) or ((a[j]=k) and (nu[j]>k1)) do dec(j); if i<=j then begin a[0]:=a[i];a[i]:=a[j];a[j]:=a[0]; st[0]:=st[i];st[i]:=st[j];st[j]:=st[0]; nu[0]:=nu[i];nu[i]:=nu[j];nu[j]:=nu[0]; inc(i);dec(j); end; until i>j; qsort(l,j);qsort(i,r);end;begin assign(input,'dna.in');reset(input); assign(output,'dna.out');rewrite(output); readln(l,n); for i:=1 to n do begin readln(st[i]); nu[i]:=i; end; for i:=1 to n do begin s:=st[i]; fillchar(c,sizeof(c),0); for j:=2 to l do inc(c[s[j]]); for j:=1 to l do begin if j>1 then dec(c[s[j]]); case s[j] of 'T':begin inc(a[i],c['A']); inc(a[i],c['C']); inc(a[i],c['G']); end; 'G':begin inc(a[i],c['A']); inc(a[i],c['C']); end; 'C':inc(a[i],c['A']); end; end; end; qsort(1,n); for i:=1 to n do writeln(st[i]); close(input);close(output);end.
阅读全文
0 0
- 特长生模拟 DNA排序(逆序对+快排)
- 特长生模拟——DNA排序
- 快排对二维字符排序
- 使用快排和归并求解逆序对
- 排序(快排,归并,堆排)
- 11-快排(排序)
- 特长生模拟 BIOtech(模拟)
- poj 1007 DNA Sorting 【对逆序数进行sort排序】
- 排序(快排, 计数排序)
- 排序算法(快排,希尔排序)
- 特长生模拟 Array(水)
- 特长生模拟 Distinct (二分)
- DNA逆序对的问题: DNA sorting
- HDOJ 1379 DNA Sorting (sort 快排)
- CODEVS 1076 排序(快排)
- HDUOJ 1862 excel 排序(快排)
- 两种排序(快排+冒泡)
- 算法—排序(快排,冒泡)
- POJ 1270 Following Orders 笔记
- java总结
- Spring--1.Spring容器
- 智能指针
- bzoj1115: [POI2009]石子游戏Kam
- 特长生模拟 DNA排序(逆序对+快排)
- Unity3D研究院编辑器之[System.Serializable]数组List对象添加默认值(二十七)
- Activity 启动模式全解析
- caffe深度网络优化过程中loss=nan
- 剑指offer第三题至第九题(java详解)
- 设计模式之策略模式
- Android Dalvik虚拟机初识
- Tensorflow学习笔记--MNIST LSTM分类器代码
- Unity知识图谱