一、矩阵算法
1、矩阵
矩阵,是线性代数中的基本概念之一。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。矩阵乘法看起来很奇怪,但实际上非常有用,应用也十分广泛。
2、矩阵算法
矩阵算法是一种高效的算法,可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法。
3、矩阵算法的实现
矩阵算法通常需要使用二维数组来实现,矩阵算法往往需要交换或者存取矩阵中的某个元素,这就需要我们灵活掌握二维数组两个下标的变换。
二、打印魔方阵
1、魔方阵
魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2、…、n的平方的n×n的方阵,
其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。
2、C语言实现
#include <stdio.h>
#define N 20
void Matrix();
void main()
{
Matrix();
}
void Matrix()
{
int a[N][N], n, i, j, k;
while(1)
{
printf("请输入魔方阵的阶数(n<=20,且是奇数):");
scanf("%d", &n);
if(n!=0 && n<=20 && n%2!=0)
{
printf("%d阶魔方矩阵.\n", n);
break;
}
}
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j]= 0;
i= 0;
j= n/2;
a[i][j]= 1;
k= 2;
while(k<=n*n)
{
i= i-1;
j= j+1;
if(i<0 && j>n-1)
{
i= i+2;
j= j-1;
}
else
{
if(i<0)
i= n-1;
if(j>n-1)
j= 0;
}
if(a[i][j]==0)
a[i][j]= k;
else
{
i= i+2;
j= j-1;
a[i][j]= k;
}
k++;
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%4d", a[i][j]);
printf("\n");
}
}
参考文献:《The Function and Algorithm of Program Language C/C++》
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)