C++ | 找规律解法

蛇形矩阵

http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e

根据观察可以发现,元素 = 上一元素 + (i++)

// 1 3 6 10 15
// 2 5 9 14
// 4 8 13
// 7 12
// 11

// 观察第一行,3 = 1 + 2
// 也可以写为 
int i = 2, 3 = 1 + (i++);
// 同理 
6 = 3 + (i++);
// 那么现在只要推出每行第一个元素以及i的初始值就可以写出代码了

不难发现,行首元素也存在规律

  • 第1行:1
  • 第2行:1+1
  • 第3行:1+1+2

也可以写成 pre + (i++)的形式,代码就出来了

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;

    // 每一列的第一个元素
    int col_1 = 1;
    for (int i = 0; i < n; i++) {
        col_1 += i; // 更新这一列的第一个元素的值
        int temp = col_1;
        for (int j = i + 2; j < n + 2; j++) {
            cout << temp << ' ';
            temp += j;
        }

        cout << endl;
    }
}
全部评论

相关推荐

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