题解 | #蛇形矩阵#
蛇形矩阵
http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
//思路:
//同一列,相邻两行的关系为:下一行元素值 = 当前行元素值 + 下一行行号
//例如,snake[i][j]=snake[i-1][j]+i
//同一行,相邻两列的关系为:下一列元素值 = 当前列元素值 + 行号 + 下一列列号 + 1
#include<string.h>
int main(){
int N=0;
int snake[101][101]={0};
scanf("%d",&N);
//由N计算各行各列的数
for(int i=0;i<N;i++){
//确定每行第0列的数
snake[0][0]=1;
if(i>0)
snake[i][0]=snake[i-1][0]+i;
//已知第0***定其他各列的数
for(int j=1;i+j<N;j++){
snake[i][j]=snake[i][j-1]+i+j+1;
}
}
//输出
for(int i=0;i<N;i++){
for(int j=0;i+j<N;j++){
printf("%d ",snake[i][j]);
}
printf("\n");
}
}
//同一列,相邻两行的关系为:下一行元素值 = 当前行元素值 + 下一行行号
//例如,snake[i][j]=snake[i-1][j]+i
//同一行,相邻两列的关系为:下一列元素值 = 当前列元素值 + 行号 + 下一列列号 + 1
//例如,snake[i][j]=snake[i][j-1]+i+j+1;
//程序:
#include<stdio.h>#include<string.h>
int main(){
int N=0;
int snake[101][101]={0};
scanf("%d",&N);
//由N计算各行各列的数
for(int i=0;i<N;i++){
//确定每行第0列的数
snake[0][0]=1;
if(i>0)
snake[i][0]=snake[i-1][0]+i;
//已知第0***定其他各列的数
for(int j=1;i+j<N;j++){
snake[i][j]=snake[i][j-1]+i+j+1;
}
}
//输出
for(int i=0;i<N;i++){
for(int j=0;i+j<N;j++){
printf("%d ",snake[i][j]);
}
printf("\n");
}
}