題目說明
蛇形矩陣是由1開始的自然數依次排列成的乙個矩陣上三角形。
樣例輸入
5 樣例輸出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11 介面說明
原型 void getresult(int num, int* presult);
輸入引數:
int num:輸入的正整數n
輸出引數:
int * presult:指向存放蛇形矩陣的整形指標
指標指向的記憶體區域保證有效
返回值:
void
分析:對於樣例輸入5,我們可以得到如下的乙個結果a:
假設形式b中的序號從1開始,i表示行,j表示列,i,j∈;構成的是以乙個n*n的二維矩陣。從圖中的箭頭方向可以看出只要求出某乙個格仔左下角的數就可以求出當前數。假如當前值為b[i][j],如下圖:
如果要求b[i][j],只要知道b[i+1][j-1]就可以了。但是當j=1時,b[i][1]的值就是前i-1條負對角線上數字的個數-1,可以使用求和公式,所以得出如下遞推公式:
對於程式流程來說,我們要先計算矩陣第一列的值,然後使用迴圈就可以得到所有的值。
**如下:
#include
#include
#include
using
namespace
std;
int main()
int *arr = new
int[n*n];
//對矩陣的第一列進行賦值
for ( i=0; i0] = i*(i+1)/2 + 1;
}//然後對除第一列以外的單元格進行賦值,列優先
//arr[i][j] = a[i+1][j-1] + 1;
for ( j=1; jfor ( i=0; i+j < n; i++)
}for ( i=0; ifor ( j=0; j+i 1; j++)
printf("%d",arr[i*n+j]);
printf("\n");
}delete arr;
}//system("pause");
return
0;
}
列印蛇形矩陣
題目說明 蛇形矩陣是由1開始的自然數依次排列成的乙個矩陣上三角形。樣例輸入 5樣例輸出 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 方法1 此方法有點爛,思想 一行行列印 每行列印元素的個數為下列引數 n 1 i 找出每一行的第乙個元素的規律 程式中的out0引數 確定每...
C 列印蛇形正方形矩陣
c 列印蛇形正方形矩陣,如 1 2 3 8 9 4 7 6 5 using system using system.collections.generic using system.linq using system.text public static int getsnakematrix int...
螺旋矩陣 蛇形矩陣
問題描述 給定乙個包含m行n列的m x n矩陣,程式設計按照螺旋順序,輸出該矩陣中的所有元素。輸入有多個矩陣。每個矩陣資料的第1行有兩個整數m和n,接著是乙個mxn矩陣的描述,有m行,每行有n個整數 輸出對每個矩陣資料,按照螺旋順序輸出矩陣陣列的元素。輸入樣例 3 31 2 3 4 5 6 7 8 ...