#include <iostream> using namespace std; /*--------------------------------------------------------- 蛇行矩阵 Problem 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 Input 本题有多组数据,每组数据由一个正整数N组成。(N不大于100) Output 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。 矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。 Sample Input 5 Sample Output 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 ---------------------------------------------------------*/ /*--------------------------------------------------------- 主要思路是根据该题的特殊排列方式,每一行都为有n个数字 是有序的,比如 第2行 数列 2 3 第3行 数列 4 5 6 可以看做 1 2 3 4 5 6 7 8 9 10 值都是递增加1,而且第n行,必定有n个数字,根据此,将数列的转换下位置 进行数据的输入,矩阵行的值递减1,列的值递增1,行值小于0结束,换下一行 进行重复的操作,最终得到结果 ---------------------------------------------------------*/ int main(){ //矩阵阶数 const int MT_SIZE = 20; int tmp[MT_SIZE][MT_SIZE] = {0}; //构建数据 int row = 0; int value = 1; for(;row < MT_SIZE;row++){ for(int i = row,j = 0;i >= 0;i--,j++){ tmp[i][j] = value++; } } //输出结果 for(int i = 0;i < MT_SIZE;i++){ for(int j = 0;j < MT_SIZE - i;j++){ cout<<tmp[i][j]<<" "; } cout<<endl; } return 0; }