题解 | #蛇形矩阵#
蛇形矩阵
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;
}
}
}
查看4道真题和解析