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就可...