仔细思考,其实还是有规律可循的
那就是一直是对角线的<右上>,<左下>循环输出…
然鹅菜鸡的我居然调试了1h
QAQ加油~
#include <iostream>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int a[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
int i=0,j=0;
printf("%d ",a[i][j]);
j++;
int num = 0;
while(num < n*n-2)
{
while(j == n-1 && a[i][j] == -1)
i ++;
while(i == n-1 && a[i][j] == -1)
j ++;
if(i == 0 || j == n-1)//左下
{
while(i < n && j >= 0)
printf("%d ",a[i][j]),a[i][j] = -1,i++,j--,num++;
}
else
{
while(i >= 0 && j < n)
printf("%d ",a[i][j]),a[i][j] = -1,i--,j++,num++;
}
if(i < 0)
i++;
else if(i >= n)
i--;
if(j >= n)
j--;
else if(j < 0)
j++;
if(i == n-1 && j == 0 && a[i][j] == -1)
j++;
if(i == 0 && j == n-1 && a[i][j] == -1)
i++;
}
printf("%d ",a[n-1][n-1]);
return 0;
}