1樓:
我覺得這個資料範圍完全不用什麼快排,大材小用,30000內的數直接計數排序就可以了(你的程式就是計數排序).
你這麼做我覺得是完全正確的,我也寫了個資料生成器來試了試,你的程式時間複雜度完全過關,正確性應該沒有問題.
空間不應該有問題,你的空間複雜度十分低,低到了基本可以忽略的地步,不可能mle的
2樓:匿名使用者
學過快排嗎?這題很簡單,用快排排一遍,在從頭到尾比較一遍。**我不打了,
如果你還有不明白的再問,如果明白了就採個最佳吧
你的**空間超了。
3樓:匿名使用者
望採納var
a,b:array[1..30000]of longint;
s,n,m,k,i:longint;
procedure qs(x,y:longint);//快排;
var i,j,q,t:longint;
begin
i:=x;j:=y;
q:=(i+j)shr 1;
repeat
while (b[i]>b[q])do
inc(i);
while (b[j]=j;
if ia[q])do
dec(j);
if i<=j then
begin
t:=a[i];a[i]:=a[j];a[j]:=t;
inc(i);dec(j);
end;
until i>=j;
if im then
m:=s;//記錄最大值;
a[s]:=s;
inc(b[s]);
end;
readln;
qs(k,m);
m:=k;
while b[m]=b[k]do
inc(m);
dec(m);
qs1(k,m);
for i:=k to m do
writeln(a[i],' ',b[i]);
end.
眾數,pascal糾錯
4樓:匿名使用者
varn:integer;
a:array[1..30000] of integer;
f:text;
i,k,max:integer;
begin
for i:=1 to 30000 do a[i]:=0;
assign(f,'眾數.in'); reset(f);
readln(f,n);
for i:=1 to n do begin read(f,k); inc(a[k]); end;
close(f);
max:=0;
for i:=1 to 30000 do if a[i]>max then max:=a[i];
for i:=1 to 30000 do if a[i]=max then writeln(i:5,a[i]:5);
end.
pascal語言 給出乙個整數a和乙個正整數n,求乘方a的n次方
5樓:飝快de時間
uses math;
vara,n:longint;
begin
readln(a,n);
writeln(power(a,n));
end.
求下面問題的pascal程式,第二題要用氣泡排序
6樓:匿名使用者
第一題var n,i,j,k,a,b,s:longint;
begin
s:=0;
readln(a,b);
for i:=a to b do beginn:=sqrt(i);
j:=i;
k:=0;
while j<>0 do begin
inc(k,j mod 10);
j:=j div 10;
end;
k:=sqrt(k);
while n<>0 do begin
dec(k,n mod 10);
n:=n div 10;
end;
if k=0 then inc(s);
end;
writeln(s);
end.
第二題var n,k,i,j,t:longint;
a:array[1..10000] of longint;
begin
readln(n,k);
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do if a[i]>a[j] then begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
writeln(a[k]);
end.
誰能給我解釋一下,這個pascal程式是什麼意思?為什麼要這樣解決這個問題?請詳細地解釋一下。謝謝!!!
7樓:聽不清啊
這是不我改的嗎?
var a:array[1..10000] of longint;
i,j,n,k,t,h:longint;
begin read(n,k);
for h:=1 to n do read(a[h]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begint:=a[j];
a[j]:=a[i];
a[i]:=t;
end;
i:=1; j:=1;
while (ja[i-1] then inc(j);
end;
if (i=n)and(j end. 8樓:匿名使用者 這個程式讀入資料後進行排序,然後就能找出第k小整數 pascal:1.任意給定乙個正整數n,求乙個最小的正整數m,使得n*m的十進位制表示形式裡只含1和0。 要程式!快
30 9樓:匿名使用者 純模擬就行了,2013julyxx打的程式應該是對的,不過你的n範圍是多少,還有一種情況就是——不論m為多少,都無法滿足要求,請問這時輸出什麼? 10樓:匿名使用者 水題var n,i:longint; function f(x:qword):boolean; begin while x>0 do begin if x mod 10>1 then exit(false); x:=x div 10; end; end; begin read(n); for i:=1 to 1000000 doif f(n*i) then begin writeln(i); halt; end; end. 這裡不但有這一題的詳細解答,還有其他相似題目,可供參考。附程式 program ll vars,i,j,n,min,v longint a array 0.10000 of longint procedure run k,va longint begin if va min then min va ... 用hash壓縮下,時空效率就很高了。先放在陣列,再用for迴圈,迴圈是 a to z 然後再用選擇排序 for i 1 to n 1 do for j i 1 to n do begin t a i a i a j a j t end 一道pascal問題求解 按題意,分子中能分解出sum1個2,分... 首先第一行為你的錢數,第二行表示有n個遊戲,並且有n個時間段,第三行表示每個遊戲必須在某個時間段前完成,最後一行即沒有完成相應遊戲的扣錢數。顯然輸入資料為7個時間段。在第乙個時間段玩第1個遊戲,第二個玩第2個遊戲,第三段玩第4個遊戲,第四段玩第3個遊戲,第五段玩第7個遊戲。這樣沒有玩第5 6個遊戲,... 像writeln sqrta 8 2 中的 8 2,稱之為 雙場寬 我們知道實型 real型,小數 數值在pascal中表現為科學計數法。比如 123.456,表現為 1.2345600000e 02。為了跟我們的日常使用習慣接近,我們用雙場寬控制實型數值的輸出形式。第乙個冒號後面的數表示總場寬,包... 這是dp吧。注意 這是乙個完全揹包問題。程式是網上找的,今天太遲了,已經23 00了,看看這個程式,應該符合要求,如果有疑問,明天可以追問我。var n,i,j,k,p,la longint f array 0.200 of longint a array 1.100 of longint bo a...pascal題 裝箱問題求解法,PASCAL題 裝箱問題求解法
一道pascal問題求解,一道Pascal問題求解
pascal題目求解
pascal語言小問題,關於Pascal語言問題 完整的
pascal質數問題