7-5 JPEG压缩中需要的蛇形填充 (15 分)
数字图像中,格式为的JPEG文件生成的过程中需要对88方块内像素实施蛇形遍历以进行后续的DFT变换编码。不过这里的任务是需要你按蛇形填充一个规模为nn的方阵,用1到n平方的数值实施填充。 蛇形填充方法为: 对于每一条左下-右上的斜线,从左上到右下依次编号1,2,…,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。 比如n=4时,方阵填充为如下形式: 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16
输入格式: 输入只有一个整数n(n是不超过15的正整数),即方阵的大小
输出格式: 输出蛇形填充后得到的整数方阵。每个数字占4个字符宽。
输入样例: 在这里给出一组输入。例如:
4 输出样例: 在这里给出相应的输出。例如:
1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16
#include<stdio.h>
int a[100][100],n;
int main()
{
scanf("%d",&n);
int i=1,j=1,idx=1;
while(idx<n*n)
{
while(i-1>=1&&j+1<=n)
a[i--][j++]=idx++;
if(j<n)
a[i][j++]=idx++;
else if(i<n)
a[i++][j]=idx++;
while(i+1<=n&&j-1>=1)
a[i++][j--]=idx++;
if(i<n)
a[i++][j]=idx++;
else if(j<n)
a[i][j++]=idx++;
}
a[n][n]=n*n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
202203282021一
|