蛇形矩阵
前些天忘了是哪位朋友提问关于蛇形矩阵的问题,后来帖子不知道为什么给锁上了。现在写了一个,发出来,望大家给予批评。
#include<stdio.h>
#define N 20
#define WAP(a,b) {int _t=a;a=b;b=_t;}
void change(int a[N][N],int n,int k );
void output(int a[N][N],int n);
int main(void)
{
int n,i,j,x,y,k,m,count;
int a[N][N];
while((scanf("%d %d",&n,&m))==2)// n 值为当前矩阵的层, m 值的奇偶是矩阵蛇形的方向
{
for(i=count=0,k=1;i>=0;i+=k)
{
if(i==n)
{
k=-1;
}
if(k>0)
{
x=i,y=0;
j=0;
}
else
{
x=n-1,y=n-i+1;
j=2;
}
for(;j<=i;++j)
{
a[x--][y++]=++count;
}
}
change(a,n,m);
output(a,n);
}
return 0;
}
void change(int a[N][N],int n,int k)
{
int x,y;
if(k%2)
{
for(x=0;x<n;x+=2)
{
for(y=1;y<n;y+=2)
{
WAP(a[x][y],a[y][x]);
}
}
}
else
{
for(x=0;x<n;++x)
{
for(y=x;y<n;y+=2)
{
WAP(a[x][y],a[y][x]);
}
}
}
}
void output(int a[N][N],int n)
{
int x,y;
for(x=0;x<n;++x)
{
for(y=0;y<n;++y)
{
printf("%4d",a[x][y]);
}
puts("");
}
}
...全文
相关推荐
Python笔试题之蛇形矩阵:
输入一个正整数N(N不大于100),输出一个n行的蛇形矩阵。 示例输入: 5 示例输出: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 解法一: while True: try: N = int(input()) tmp_begin = 1 # 第一行的数 for i in range(1, N+1): begin = tmp_begin # 每行的开头 if i == N: print(begin) el
蛇形矩阵算法
三种蛇形矩阵的具体算法
螺旋蛇形矩阵
自己写的一个小程序,输入一个整数N,输出N阶逆时针蛇形矩阵
蛇形矩阵c++程序(数值排列)
基于c++的蛇形矩阵,通过用户输入蛇形矩阵的维数,自动具体输出蛇形排列矩阵
逆时针蛇形矩阵问题
这是一个c语言的作业,能够输出逆时针蛇形矩阵,很好用!!


