// Q713919.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
int movenext(int *x, int *y, int *dir, int n)
{
if (*x == *y && *y == n - 1) return false;
if (*x == 0 && *y == 0)
{
*y = 1; *dir = 1;
}
else if (*y == 0 && *dir == 1)
{
if (*x < n - 1)
*x = *x + 1;
else
*y = *y + 1;
*dir = 2;
}
else if (*x == 0 && *dir == 2)
{
if (*y < n - 1)
*y = *y + 1;
else
*x = *x + 1;
*dir = 1;
}
else if (*x == n - 1 && *dir == 1)
{
*y = *y + 1;
*dir = 2;
}
else if (*y == n - 1 && *dir == 2)
{
*x = *x + 1;
*dir = 1;
}
else if (*dir == 1)
{
*x = *x + 1;
*y = *y - 1;
}
else if (*dir == 2)
{
*x = *x - 1;
*y = *y + 1;
}
return true;
}
int main()
{
int x = 0;
int y = 0;
int dir = 0;
int n;
scanf("%d", &n);
int * arr = (int *)malloc(sizeof(int) * n * n);
arr[0] = 0;
for (int i = 1; i < n * n; i++)
{
movenext(&x, &y, &dir, n);
arr[x * n + y] = i;
}
for (int i = 0; i < n * n; i++)
{
printf("%d\t", arr[i]);
if (i % n == n - 1) printf("\n");
}
return 0;
}
如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢