蓝桥 试题 基础练习 杨辉三角形——11行代码AC
生活随笔
收集整理的這篇文章主要介紹了
蓝桥 试题 基础练习 杨辉三角形——11行代码AC
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
注意點:
1、本質上是一道找規律的二維數組題(二維數組題多是這樣,擺個陣,叫你找規律)。
2、直接判斷,a[i][j]等于a[i-1][j]+a[i-1][j-1];的值
3、寫數列時很容易想到用二維數組存儲,最后輸出。但更優化的解法是:在線處理算法。也就是處理完某個數,直接輸出,免除了最后還需要遍歷一遍的操作。
4、若采用優化解法,切記二維數組要定義為全局變量,否則必須初始化為0。
欠佳的代碼:
#include<bits/stdc++.h> //萬能頭文件 using namespace std; int main() {int n, num = 1; cin >> n;vector<int>v[n]; //動態數組 if(n == 1) { v[0][0] = 1; cout << v[0][0] << endl; return 0; } //ifn==1, 特殊情況 for(int i = 0; i < n; i++) { //填充,注意 for(int j = 0; j < num; j++) {v[i].resize(num); //為vector動態分配空間 if(j == 0 || j == (num-1)) v[i][j] = 1; else v[i][j] = v[i-1][j] + v[i-1][j-1];} num++;}for(int i = 0; i < n; i++) {for(int j = 0; j < v[i].size(); j++) cout << v[i][j] << ' ';cout << endl; }return 0; }優化解法
#include<stdio.h> int a[35][36]; a[0][0] = 1; //必須定義為全局變量, int main() {int n; scanf("%d", &n);for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) {a[i][j]=a[i-1][j]+a[i-1][j-1];printf("%d ",a[i][j]);} printf("\n"); }return 0; }總結
以上是生活随笔為你收集整理的蓝桥 试题 基础练习 杨辉三角形——11行代码AC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯 试题 基础练习 特殊回文数——1
- 下一篇: 蓝桥杯 试题 基础练习 字母图形——13