题解 | #蛇形矩阵#
蛇形矩阵
http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
二维遍历即可,注意要能推导出等差数列的公式(再减去行号-1)
等差数列规律,以途中18为例:从最左边一列依次+1,到路口向右再依次+1。
注意最后还要减去那个没算进来的的‘4’(即行号)。
整理后公式为:(i+j)*(i+j-1)/2 -i +1
#include<bits/stdc++.h> //蛇形用等差数列观察,规律很nice~ using namespace std; int main(){ int n; while(cin>>n){ vector<vector<int>> v(n+1,vector<int>(n+1,0)); for(int i=1;i<=n;i++){ for(int j=1;j<=n-i+1;j++){ if(j!=1) cout<<' '; cout<<(i+j)*(i+j-1)/2 -i+1; } cout<<endl; } } }