蛇形矩阵

王朝百科·作者佚名  2010-04-17  
宽屏版  字体: |||超大  

蛇形矩阵
蛇形矩阵

蛇形矩阵:矩阵的一种,常被应用在编程题目与数学数列中;

PASCAL语言蛇形矩阵生成代码:

Program she; const max=10; var d,i,j,m,N:integer; A:array [1..10,1..10] of integer;

begin write('N=');readln(N); if (N>=1) and (N<=max) then begin i:=1;j:=1;m:=1;d:=1; repeat A[i,j]:=m; {填数}

case d of

1: begin i:=i+1; if j=1 then d:=2 else d:=4; end;

2: begin i:=i-1;j:=j+1;

if j=N then d:=1 else if i=1 then d:=3;end;

3: begin j:=j+1; if i=N then d:=2 else d:=4;end;

4: begin i:=i+1;j:=j-1;

if i=N then d:=3 else if j=1 then d:=1;end;

end;

m:=m+1;

until m>N*N;

writeln('OUTPUT:');

for i:=1 to N do begin for j:=1 to N do write(A[i,j]:4); {输出填数} writeln;end;

end

else writeln('Input N error!');

end.

C++程序

#include <iostream>

using namespace std;

int main(){

//该程序虽然能通过评测系统的检测,但时间复杂度为O(n^3),因而有待改进

int N; //矩阵阶数

int a[11][11]; //N阶矩阵

int count=0; //矩阵元素值,初始为0

cin>>N;

for(int i=1;i<=2*N-1;i++){ //N阶方阵有2*N-1条反对角线,依次遍历之

if(i%2!=0){ //当对角线编号为奇数时,各元素按此对角线上的矩阵各元素下标之和从小到大的顺序排列

for(int j=1;j<=N;j++)

for(int k=1;k<=N;k++){

if(j+k==i+1) a[j][k]=++count; //各元素的下标之和==对角线编号+1

}

}

else{ //当对角线编号为偶数时,各元素按此对角线上的矩阵各元素下标之和从大到小的顺序排列

for(int j=N;j>=1;j--)

for(int k=N;k>=1;k--){

if(j+k==i+1) a[j][k]=++count; //各元素的下标之和==对角线编号+1

}

}

}

for(int i=1;i<=N;i++)

for(int j=1;j<=N;j++){

if(j!=N)

cout<<a[i][j]<<" ";

else

cout<<a[i][j]<<" "<<endl;

}

system("pause");

return 0;

}

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有