pascal 數字分組問題,Pascal記數問題

2023-02-11 11:00:11 字數 4983 閱讀 5559

1樓:陽光上的橋

答案是這些:

計算這個答案的pascal程式如下,做好心理準備,別笑疼了肚子:

program project1;

var a1,a2,a3,a4,a5,a6,a7,a8,a9: integer;

beginfor a1:=1 to 9 do

for a2:=1 to 9 do

if a2<>a1 then

for a3:=1 to 9 do

if (a3<>a2) and (a2<>a1) then

for a4:=1 to 9 do

if (a4<>a3) and (a4<>a2) and (a4<>a1) then

for a5:=1 to 9 do

if (a5<>a4) and (a5<>a3) and (a5<>a2) and (a5<>a1) then

for a6:=1 to 9 do

if (a6<>a5) and (a6<>a4) and (a6<>a3) and (a6<>a2) and (a6<>a1) then

for a7:=1 to 9 do

if (a7<>a6) and (a7<>a5) and (a7<>a4) and (a7<>a3) and (a7<>a2) and (a7<>a1) then

for a8:=1 to 9 do

if (a8<>a7) and (a8<>a6) and (a8<>a5) and (a8<>a4) and (a8<>a3) and (a8<>a2) and (a8<>a1) then

for a9:=1 to 9 do

if (a9<>a8) and (a9<>a7) and (a9<>a6) and (a9<>a5) and (a9<>a4) and (a9<>a3) and (a9<>a2) and (a9<>a1) then

if ((a1*100+a2*10+a3)=(a4*100+a5*10+a6) div 2) and ((a1*100+a2*10+a3)=(a7*100+a8*10+a9) div 3) then

writeln(a1,a2,a3,',a4,a5,a6,',a7,a8,a9);

end.

2樓:匿名使用者

先確認一下是分成兩組還是三組。

應該是三組吧。

思路我是有了。但今天太晚了。得回去了。

明天我給你程式。

思路是這樣的。

先 for i:=123 to 321 do因為這樣先確保每個位是三位數。

接著判斷每個位是不是重複就可以了。

pascal記數問題

3樓:圓周率

應為for迴圈後如果不加begin end就只執行後一條語句,注意是一條!!應該是。

for i:=1 to n do

beginstr(i,s1);

beginfor j:=1 to length(s1) doif s1[j]=s then a:=a+1;

end;end;

pascal問題(數字三角形) 10

4樓:匿名使用者

ls那個程式沒有輸出路徑哈。。

還有n的值呢。。

假設n的值在數陣之前讀:

vari,j,k,m,n:longint;

dp,dx,dy,a:array[1..10,1..10] of longint; /dp[i,j]表示陣列第i行j列時。

procedure printindfs(x,y:longint);

vari,j:longint;

beginif dx[x,y]=0 then begin writeln(a[x,y]);exit;end;

write(a[x,y],'

printindfs(dx[x,y],dy[x,y]);

end;procedure max(x,y:longint);

vari,j:longint;

beginif dp[x+1,y]>dp[x+1,y+1] thenbegin

inc(dp[x,y],dp[x+1,y]);

dx[x,y]:=x+1;

dy[x,y]:=y;

endelse

begininc(dp[x,y],dp[x+1,y+1]);

dx[x,y]:=x+1;

dy[x,y]:=y+1;

end;end;

beginread(n);

for i:=1 to n do

for j:=1 to i do

read(dp[i,j]);

a:=dp;

for i:=n-1 downto 1 dofor j:=1 to i do

beginmax(i,j);

end;writeln(dp[1,1]);

printindfs(1,1);

end.

數字排列問題(pascal)

5樓:匿名使用者

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

6樓:網友

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

7樓:匿名使用者

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

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問題猜數字(難) 5

8樓:武風

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

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

好像n超過4就會爆掉。

pascal數字三角形問題

9樓:匿名使用者

很水的dp

可以從上往下dp

也可以從下往上dp

a[i,j]表示處在(i,j)位置的值。

讀入就不寫了。

寫一下方程吧,兩個方程。

f[i,j]:=min(f[i-1,j],f[i-1,j-1])+a[i,j];/從上往下dp

f[i,j]:=min(f[i+1,j],f[i+1,j+1])+a[i,j];/從下往上dp

寫一下迴圈吧。

從上往下。f[1,1]:=a[1,1];

for i:=2 to n do

for j:=1 to i do

f[i,j]:=min(f[i-1,j],f[i-1,j-1])+a[i,j];

目標是f[n,i]中最大的一個。

從下往上的。

for i:=1 to n do

f[n,i]:=a[n,i];

for i:=n-1 downto 1 do

for j:=1 to i do

f[i,j]:=min(f[i+1,j],f[i+1,j+1])+a[i,j];

目標是f[1,1]

自己打的應該沒什麼錯吧。

10樓:oi淘盡英雄

顯然是dp。

狀態轉移方程:f[i,j]=max+a[i,j];

最後的解產生在:

min:=maxlongint;

for i:=1 to n do

if f[n,i]>min then min:=f[n,i];

11樓:匿名使用者

用滾動陣列+動態規劃做。

free pascal紀念品分組問題,用貪心演算法來寫

數字排列問題(pascal語言)

pascal程式問題

錯誤 score array 1.m,1.n of real 程式初始化時m可以是3萬多,如果是free pascal還可以是20億多,而且值不固定。可以是0,5,1000000000000000,或者其他的值。因為m是變數。而申請陣列肯定需要一個確切的大小,不能如此隨便。所以編譯器會報錯。設想一下...

Pascal程式設計問題

那位仁兄的答案是錯的額,你判斷閏年有問題,真正閏年的定義是 年號是400的整倍數或4的整倍數 但非100的倍數 也就是說2000是閏年,2004年也是閏年,但3000年不是閏年。vara,b,c integer begin readln a,b casebof 1,3,5,7,8,10,12 c 3...

pascal郵票問題程式設計題目郵票問題

如樓上所說這個子程式其實就是求能構成的最大面值,對於每個面值的郵票,選擇要幾張,並且郵票用光了就結束,結果就在money裡 其實沒有太大的意義 讓你體會一下回溯的思想 這個子程式其實就是求能構成的最大面值,對於每個面值的郵票,選擇要幾張,並且郵票用光了就結束,結果就在money裡,通過money就可...