POJ 1007 求逆序對數)

2021-06-08 11:59:08 字數 1415 閱讀 2148

求逆序對數,2關鍵字排序

program p1007;

var n,m,i,j,k,l,p:longint;

a:array[1..200] of string;

s:string;

b,num:array[1..200] of longint;

function h(s:string):longint;

var i,j,a,c,g,t:longint;

begin

a:=0;

c:=0;

g:=0;

t:=0;

h:=0;

for i:=length(s) downto 1 do

begin

if s[i]='a' then inc(a);

if s[i]='c' then

begin

inc(c);

inc(h,a);

end;

if s[i]='g' then

begin

inc(g);

inc(h,a+c);

end;

if s[i]='t' then

begin

inc(t);

inc(h,a+c+g);

end;

end;

end;

procedure qsort(l,r:longint);

var i,j,m,p:longint;

s2:string;

begin

i:=l;

j:=r;

m:=b[(l+r) div 2];

repeat

while b[i]m do dec(j);

if i<=j then

begin

p:=b[i];

b[i]:=b[j];

b[j]:=p;

p:=num[i];

num[i]:=num[j];

num[j]:=p;

inc(i);

dec(j);

end;

until i>j;

if lb[i] then break;

if (b[i]<>b[m]) then dec(j);

for k:=i to j-1 do

for l:=k+1 to j do

if num[k]>num[l] then

begin

p:=num[k];

num[k]:=num[l];

num[l]:=p;

end;

i:=j+1;

end;

end;

for i:=1 to m do writeln(a[num[i]]);

end.

poj1007 逆序數 排序

非常簡單的逆序數 排序。這裡對sort和qsort徹底的弄明白了。sort是c 裡面的,要包含algorithm標頭檔案,cmp函式要返回bool值。qsort是包含在stdlib.h這個標頭檔案裡面,cmp函式比較特殊cmp const void a,const void b 一般返回int.我用...

求陣列中的逆序對數目(POJ1007)

這個題真心寫醜了,不過當做練習還是很不錯的。思想就是利用歸併排序的辦法,先計算左右兩個子陣列的逆序對數目,把他們加起來。然後用兩個指標指向子陣列的頭,如果前面的子陣列目前元素較大,就把後面子陣列的頭部元素插入結果陣列 否則,前面的元素應該進入結果陣列了,此時,結果陣列裡的後面子陣列元素個數即為此元素...

POJ 1007題目解答

poj 1007題目解答 題目要求是對固定長度的字串進行排序,當然排序的前提是按照每個字串內部 使字元達到有序條件的時候需要的轉置交換次數按照從大到小對所有字串進行排序,暴力解法直接計算出每個字串需要進行的轉置次數。include include include using namespace st...