數字排列問題(pascal語言)

2023-03-16 21:45:04 字數 3510 閱讀 2081

1樓:匿名使用者

1. 建議不要用const,在主程式上readln(n);

2. a[1]:=i;

這裡是錯的,應該是a[i]:=i;你寫成了a[1]3. for i:=1 to n do

begina[1]:=i;

find(2)

end這裡find(2),不要放在迴圈裡面,正確的是for i:=1 to n do

begina[1]:=i;

endfind(1);

4.建一個陣列判斷i是否重複。

b:array[1..100]of boolean;

剛開始所有的i都是false fillchar(b,sizeof(b),false);

5. for i:=1 to n do

for j:=1 to k-1 do

beginif i<>a[j] then begina[k]:=i;

find(k+1)

endend

然後這裡就改成。

for i:=1 to n do

beginif b[i]=false then beginb[i]:=true

a[k]:=i;

find(k+1);

b[i]:=false;

end還有不明白的再問。end

pascal數字排列問題

數字排列問題(pascal)

2樓:匿名使用者

1. 建議不要用const,在主程式上readln(n);

2. a[1]:=i;

這裡是錯的,應該是a[i]:=i;你寫成了a[1]3. for i:=1 to n do

begina[1]:=i;

find(2)

end這裡find(2),不要放在迴圈裡面,正確的是for i:=1 to n do

begina[1]:=i;

endfind(1);

4.建一個陣列判斷i是否重複。

b:array[1..100]of boolean;

剛開始所有的i都是false fillchar(b,sizeof(b),false);

5. for i:=1 to n do

for j:=1 to k-1 do

beginif i<>a[j] then begina[k]:=i;

find(k+1)

endend

然後這裡就改成。

for i:=1 to n do

beginif b[i]=false then beginb[i]:=true

a[k]:=i;

find(k+1);

b[i]:=false;

end還有不明白的再問。end

3樓:網友

我想說的是,你的程式用了goto語句後就破壞了程式的協調性,難以對其進行優化,大牛的程式沒有goto語句就是因為程式自頂向下的設計方式是最簡單的,優化的話最好做個過程,用n個迴圈巢狀看看也不美觀,對吧。

4樓:匿名使用者

要用回溯法,程式如下,需要說明看這個網頁。

vara:array[0..100]of integer;

n,i:integer;

procedure make(p:integer);

var i,j,k:integer;

b:array[0..100]of integer;

beginif p=n then begin for i:=1 to n do write(a[i],'writeln;end

elsefor i:=p to n do

beginj:=a[i]; a[i]:=a[p]; a[p]:=j;

b:=a;make(p+1);

a:=b;end;

end;begin

readln(n);

for i:=1 to n do a[i]:=i;

make(1);

end.

【pascal】編寫一個程式,生成1,2,3,4,5五個數字的全排列

5樓:唯愛之浩兔子

varm,n:integer;

a:array[1..100]of integer;

fg:array[1..100]of boolean;

procedure print;

vari:integer;

beginfor i:=1 to m do

write(a[i],'

writeln;

end;procedure try(p:integer);

vari:integer;

beginif p>m then exit;

for i:=1 to n do

if not fg[i] then

begina[p]:=i;

fg[i]:=true;

if p=m then print

else try(p+1);

fg[i]:=false;

end;end;

beginfillchar(fg,sizeof(fg),0);

n:=5;m:=5;

try(1);

end.不行的話再來找我。

pascal求組合數的方法?

6樓:匿名使用者

因為組合數公式中,階乘的結果往往超過通常的資料範圍,所以在不需要高精度的情況下,我們通常用遞推公式求解。遞推公式是c(m, n) =c(m - 1, n) +c(m - 1, n - 1)(注:m = n時,把c(m - 1, n)當作0即可,無需特殊處理)邊界條件是c(1, 0) =1, c(1, 1) =1所以只需要開闢一個二維integer(或longint / int64)陣列由m = 1開始遞推即可即外層迴圈是m,內層迴圈是n

7樓:匿名使用者

c(m,n) =m!/(m-n)!n!!表示求階乘c表示求組合n!=1*2*3*..n0!=1如有任何問題請追問。

用pascal語言:輸入一個三位數的整數,將數字位置重新排列,組成一個儘可大的三位數。例如:輸入213,重

8樓:匿名使用者

if(b>=c)and(c>=a)then writeln(b,c,a>; 應該是『)』最後一行 writeln(a,b,a); 應該是(c,b,a);

倒數第二行 的readln 可以刪去。求採納。

pascal怎麼把四個數從大到小排列

pascal問題猜數字(難) 5

9樓:武風

這道題目方法是一定有的,但很遺憾,我只想到了最暴力的列舉輸入一個數,和那貨心中的數的位數。

把n位數每個都列舉一遍,求每個數的全排列,減去原來那個數,再和那個數進行對比。

好像n超過4就會爆掉。

c語言數字排列問題,C語言數字全排列的問題(急!!)求C程式碼和演算法

include include typedef char array 8 void display rand int i,j int found,r get 50 uniq random numbers for i 0 i 50 i while 1 r rand 50 1 found 0 for j...

PASCAL陣列問題

這是 後面有 的說明 program zhishu const max 50100 var a array 1.max of 0.1 b array 1.2,1.10000 of longint n,i,j,k longint begin assign input,zhishu.in reset i...

組合排列問題問題。數字每組合1次,能組合多少個

先考慮首位,除了0以外的9個數都可以選,所以是c9,1 然後後四位在剩餘的9個數字中選出四個進行全排列,所以是p9,4。所以c9,1 p9,4 27216種。每六個為一組也一樣。先考慮首位,是c9,1 然後後五位在剩餘的9個數字中選出五個進行全排列,所以是p9,5。所以c9,1 p9,5 13608...