1樓:想不出起啥名嘞
是只要有就行還是所有的都能生成?
2樓:古惑仔
請參考寧波市第26屆中小學生程式設計競賽初賽完善程式第一題。
3樓:天涯冰雪蘭花
簡單,你如果只要一種解而非所有解,那麼用回溯法吧,奇偶階都能很快得出答案。如果要搜盡全部解,4階的,我耗費了幾分鐘,而5階電腦就受不了,6階的估計超級計算機也無能為力,呵呵。
4樓:網友
幻方有專門的構造方法,樓上的回溯法是不可行的,我也寫過幻方的程式(c++)10000階以內時間都不超過1s演算法在這裡。
pascal 由鍵盤上輸入任意n個一位數數輸出它的全排列
5樓:
汗……樓上的太有才了!
const n=5;
varx:array[1..10] of integer;
y:array[1..10] of boolean;
procedure outit;
var i:integer;
beginfor i:=1 to n dowrite(x[i]);
writeln;
end;procedure search(v:integer);
var i:integer;
beginif v>n then begin outit;exit;end;
for i:=1 to n do
if y[i] then
begin x[v]:=i;y[i]:=false;search(v+1);y[i]:=true;end;
end;begin
fillchar(y,sizeof(y),true);
search(1);
end.說明:使用非遞迴的好處是節約記憶體,當一些題目對記憶體消耗較大時,建議使用非遞迴方式;但使用遞迴方式在程式執行時間上要好一些,因為在每個節點擴充套件時,遞迴方式少乙個範圍超界判斷。
pascal 奇數階幻方
6樓:jackson王子
varx,y,z,m,n,i,j:integer;
a:array[1..1000,1..1000] of integer;
beginreadln(m);
if m mod 2=1 then
beginn:=(m div 2)+1;
for i:=1 to m do
beginfor j:=1 to m doa[i,j]:=0;
end;i:=1+1;j:=n+1;y:=1;
for z:=1 to m*m do
begini:=i-1;j:=j-1;
if i=0 then
begini:=m;
end;if j=0 then
beginj:=m;
end;if a[i,j]<>0 thenbegini:=i+2;
j:=j+1;
if i>m then
i:=i-m;
if j>m then
j:=j-m;
end;a[i,j]:=y;
y:=y+1;
end;end;
for i:=1 to m do
beginfor j:=1 to m dowrite(a[i,j]:5);
writeln;
end;readln;
end.我試過了,可以的。(但只限於邊長為奇數)
7樓:網友
告訴你解題思想吧!
1總是放在最後一行的中間乙個數。
接下來每個數都是在上乙個數的斜上方(如果那個位置有數則放在前乙個數的上方)
不懂的話用九宮格來實驗吧。
求解pascal全排列題目:題目輸入n,然後把n個1和n個2全排列出來,求解。。有滿意答案++分
8樓:網友
已寫好,並經過除錯無誤。
n階魔方陣 pascal
9樓:
不就是馬鞍數嗎?
program maths;
type nbt=array [1..n] of integer;
vara:array [1..n,1..n] of integer;
b,c:nbt;
i,j:integer;
beginfor i:=1 to n do
beginfor j:=1 to n do
read(a[i,j]);
b[i]:=-32768;
c[i]:=32767;
end;for i:=1 to n do
for j:=1 to n do
beginif a[i,j]>b[i] then b[i]:=a[i,j];
if a[j,i]end;
for i:=1 to n do
for j:=1 to n do if b[i]=c[j] then write(i,j);
end.這是我的創新思維,比書本上的好(自認)
還不錯吧。
pascal n個數的r個數的組合
10樓:網友
const
maxn=10;//n的最大值。
varn,r,tot:longint; //如果n和r的值再大一點的話,你應該考慮用高精。
ans:array[1..maxn] of longint; //記錄每個組合。
procedure dfs(k,p:longint); //k是當前遞迴的層數,p是當前數可以取到的最小值,這裡p是為了防止重複。
var i:longint;
beginif k=r+1 then begin //如果已經找到了r個數,輸出組合方案並退出本層遞迴。
inc(tot); //組合數個數加一。
for i:=1 to r-1 do write(ans[i],' ');
writeln(ans[r]);
exit;end;
for i:=p downto 1 do begin //如果還沒有找到r個數,找乙個可以選的數選擇,並進入下一層遞迴。
ans[k]:=i;
dfs(k+1,i-1); //進入下一層遞迴,為避免重複,下一層不能選擇之前的層選擇過的數。
end;end;
beginreadln(n,r);
dfs(1,n);
writeln('total=',tot);
end.
o(n) 的排序 pascal
11樓:網友
有的乙個比較猥瑣的排序法,比選擇排序和快速排序要快一些,但必須是已知資料範圍的情況下才可以行的排序,**如下:
varn,i,j,num:longint;
a:array[1..100000] of longint;
beginreadln(n);
fillchar(a,sizeof(a),0);
for i:=1 to n do beginread(num);
inc(a[num],1);
end;for i:=1 to 100000 doif a[i]>0 then
for j:=1 to a[i] do
write(i:4);
end.望!
12樓:網友
沒有。對所有資料都可以的效率最快只有nlongn,已知最快的是快速排序。
13樓:網友
除了桶排序,還有計數排序,時間複雜度可以是o(n)
14樓:網友
樓上的打錯字了。排序的時間複雜度下限就是nlogn,除了桶排,最快的就是nlogn的。
如何證明在n階行列式d中,若數多於n2n則d
你好 行列式一共有n2個元素,所以非0元素個數少於n個,至少有一行元素為0 否則,每行乙個非0元素就有n個非0元素了 所以行列式是0。經濟數學團隊幫你解答,請及時採納。謝謝 若0個數多於n2 n則行列式至少有一行或一列全為0定理 至少有一行或一列的元素全為0的行列式等於0 若n階行列式d中非零元素的...
函式在x點存在n階導數,則n 1階導函式在x的領域內有定義嗎
因為 f 在點 x 的 n 階導數定義為 f n x lim h 0 f n 1 x h f n 1 x h,當然需要在x的某一鄰域內一定具有 n 1 階的導數。為什麼函式在x處可以取到n階導數,必有函式在x的鄰域內取到n 1階導數 函式在點x處具有n階導數,則函式在x的某一鄰域內一定具有一切低於n...
線性代數中 n階方陣aka k的n次方a(k是常數
兔老大米奇 ka k的n次方 a k的n次方 a的n 1次方 a 為a伴隨方陣 a a的n 1次方書上有公式可以取巧求出 a 具體公式見 由a 1 a a e 得 1 a a e a 得 1 a a 1 a 得 1 a 的n次方 a 1 a 得 a a的n 1次方。擴充套件資料線性代數的定義 函式研...