蛇形矩阵

guangling_san guangling_san 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
前些天忘了是哪位朋友提问关于蛇形矩阵的问题,后来帖子不知道为什么给锁上了。现在写了一个,发出来,望大家给予批评。

#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("");
}
}
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
guangling_san
C语言 70,039 成员 243,237 内容