zigzag(JPEG编码里取像素数据的排列顺序)
例如:
0, 1, 5, 6,
2, 4, 7,12,
3, 8, 11,13,
9, 10, 14, 15.
(注意二维数组的使用)
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int N;
int i, j;
int s;
scanf("%d", &N);
int **a = (int **)malloc(sizeof(int) * N); //N行指针--分配空间
if(a == NULL)
return 0;
//给每行分配空间
for(i = 0; i < N; i++)
{
if( NULL == (a[i] = (int *)malloc(sizeof(int) * N)))
{
//注意,分配空间失败的话,不仅仅是返回,还要释放掉之前申请的
while(i--)
free(a[i]);
free(a);
return 0; //分配空间失败,返回哦
}
}
//赋值
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
s = i + j;
if(s < N)
{
a[i][j] = s * (s + 1)/2 + (s % 2 == 0 ? i : j);
}
else
{
s = (N - 1 -i) + (N - 1 - j);
a[i][j] = N * N - s * (s + 1) / 2 - (N - (