主页 > IT业界  > 

蛇形矩阵(简单明了的方法)

蛇形矩阵(简单明了的方法)
T112524 【数组2】蛇形矩阵

题目来源

AC代码 #include<stdio.h> int main() { int arr[111][111]; int n = 0; scanf("%d",&n); int temp = 0; int sum = 1; while(temp<=(2*n-2)) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if((i+j) == temp) { if(temp%2 == 0){ arr[j][i] = sum++; }else{ arr[i][j] = sum++; } } } } temp++; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { printf("%d ",arr[i][j]); } printf("\n"); } return 0; } 算法 **根据样例来分析** 输入: 4 输出: 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16

由7 8 9 10这条斜对角线可以得知:i+j=(n-1) 下面我就称这条对角线为中心对角线


在中心对角线前面的对角线分别为: i+j=(n-2)、i+j=(n-3)… 在中心对角线后面的对角线分别为: i+j=n、i+j=(n+1)…


设定一个temp变量,并且temp = i+j 让temp从0开始加到2*n-2


为什么是2*n-2呢?

因为数组的下标是从0开始的,所以说i+j最小为0,最大为2*n-2


因为最后要打印数字,所以说定义一个sum变量从1开始,不断累加,赋值给数组


因为以中心对角线为基准的左右两边的对角线:分为从上到下和从下到上两种,其中,从下到上的对应的(i+j)是偶数


过程推导:

标签:

蛇形矩阵(简单明了的方法)由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“蛇形矩阵(简单明了的方法)