矩阵问题c语言Word文件下载.docx
《矩阵问题c语言Word文件下载.docx》由会员分享,可在线阅读,更多相关《矩阵问题c语言Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
i++)
{
for(j=1;
j<
j++)
{k=i>
j?
j:
i;
printf("
%4d"
k);
}
printf("
\n"
}
}
2)
右下拐角
{if(i<
=j)
n+1-j);
else
n+1-i);
3)左下拐角
{if(i+j<
=n+1)
j);
4)右上拐角
i);
4.回形矩阵
方法1:
四个拐角矩阵拼合而成。
方法1改进:
减少判断条件。
main()
{inti,j,k,n,mi,ma;
{mi=i<
=n+1-i?
i:
n+1-i;
ma=n+1-mi;
{k=j<
mi?
ma<
n+1-j:
mi;
%3d"
putchar('
\n'
方法2:
利用对称性。
#defineN20
{
inta[N][N]={0},i,j,Q,n;
n="
Q=n/2+1;
=Q;
for(j=1;
{if(i<
a[i][j]=i;
a[i][j]=j;
a[i][n+1-j]=a[i][j];
a[n+1-i][j]=a[i][j];
a[n+1-i][n+1-j]=a[i][j];
{for(j=1;
a[i][j]);
方法3:
按圈打。
intmin(inta,intb,intc,intd)
intm=a;
if(m>
b)m=b;
c)m=c;
d)m=d;
returnm;
{for(j=1;
{k=min(i,j,n+1-i,n+1-j);
5.螺旋矩阵
16
15
14
13
17
24
23
12
18
25
22
11
19
20
21
10
6
7
8
9
拟人法:
按圈行走
inta[N][N]={0};
intn,s,i,j,edge;
edge=n,s=1;
i=j=1;
do{
while(a[i][j]==0&
&
i<
=edge)
{a[i][j]=s;
s++;
i++;
i--;
j++;
j<
j--;
i--;
i>
=n+1-edge)
i++;
j--;
j>
j++;
}while(s<
=n*n);
解析法:
按区域填空
{intn,i,j,k,s,d,l;
inta[20][20]={0};
scanf("
for(k=1;
k<
=n*n;
k++)
{a[i][j]=k;
if(i+j<
n+1&
=j-1)i++;
elseif(i>
j&
i+j>
=n+1)j++;
elseif(i+j>
=j)i--;
elseif(i+j<
=n+1&
j-1)j--;
按圈、段,位置填空
{staticinta[N][N];
inti,j,D,Q,G,n,k,m,s;
if(i>
=j&
i+j<
n+1)
{D=1;
Q=j;
G=i-(Q-1);
elseif(i+j>
j)
{D=2;
Q=n+1-i;
G=j-(Q-1);
elseif(i<
{D=3;
Q=n+1-j;
G=n+1-i-(Q-1);
{D=4;
Q=i;
G=n+1-j-(Q-1);
s=0;
m=n-1;
=Q-1;
s+=4*(m-2*(k-1));
a[i][j]=s+(D-1)*(m-2*(Q-1))+G;
6.斜行矩阵
inti=1,j=1,n,k=1;
a[1][1]=k;
while(k++<
=25)
if(i==n)
{i=j+1;
j=n;
a[i][j]=k;
elseif(j==1)
{j=i+1;
i=1;
{i++;
7.蛇形矩阵
staticinta[N][N];
inti,j,n,d,k;
d=1;
a[i][j]=k;
i-=d;
j+=d;
if(i==n+1){i=n;
j+=2;
d=-d;
elseif(j==n+1){i+=2;
elseif(i==0){i=1;
elseif(j==0){j=1;
8.杨辉三角阵
使用二维数组
include<
inti,j,n;
a[0][0]=1;
=i;
a[i][j]=a[i-1][j-1]+a[i-1][j];
使用一维数组
staticinta[N];
a[1]=1;
{for(j=i;
j>
=1;
j--)
a[j]=a[j]+a[j-1];
a[j]);
9.直角三角阵
1)形式1
a[1][1]=1;
=n*(n+1)/2)
if(i==1)
j=1;
{i--;
i+j<
=n+1;
=n+1-i;
if(i==1&
j==1)
a[i][j]=1;
a[i][j]=a[i-1][1]+i-1;
a[i][j]=a[i][j-1]+j+(i-1);
按层打印
inti,j,n,L;
{L=i+j-1;
a[i][j]=L*(L-1)/2+1+j-1;
2)形式2
if(i+j==n+1)
{j=n+1-i+1;
3)形式3
4)形式4
{i=n+1-j+1;
1.打印星号图。
1)共打印3行,每列6个。
*
2)平行四边形
3)等腰三角形
4)菱形
共7行,上4行:
每i行先打印4-i个空格,再打印2i-1个‘*’号。
下3行:
行数递减时,每i行先打印4-i个空格,再打印2i-1个‘*’号。
对m行,n=m/2+1,先打印1~n行,再打印n-1~1行。
#include<
inti,j,n,m;
inputm"
m);
n=m/2+1;
=n-i;
putchar('
'
=2*i-1;
*'
for(i=n-1;
i>
0;
i--)
统一处理
math.h>
inti,j;
for(i=1;
=7;
{for(j=1;
=abs(i-4);
j++)printf("
for(j=1;
=7-2*abs(i-4);
*"
5)两个等腰三角形
6)两个平行四边形
2.打印字母等腰三角形
1)三角形的大小由键盘输入,如n=5,如图
A
B
C
D
E
F
G
H
I
2)打印字母对称的等腰三角形,三角形大小由键盘输入。
如图