题解 | #蛇形矩阵#

蛇形矩阵

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;
        }
    }
}


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务