一维数组 输出 杨辉三角形
解法一:
// 一维数组 输出 杨辉三角形 void main() { int i, j, t, n[N + 1] = { 0, 1 }; printf("%5d\n", n[1]); for (i = 2; i <= N; i++) { n[i] = t = 1; printf("%5d", n[1]); for (j = 2; j < i; j++) { printf("%5d", n[j] += t); t = n[j] - t; } printf("%5d\n", n[i]); } getchar(); }
解法二:
#include <stdio.h> #include <stdlib.h> #define N 8 // 一维数组 输出 杨辉三角形 int main() { printf("\tPascal 三角形\n\n"); int i, j, n[N+1]; printf("%5d\n", n[1] = 1); for (i = 2; i <= N; i++) { n[i] = 1; printf("%5d", n[i]); for (j = i-1; j > 1; j--) printf("%5d", n[j] += n[j-1]); printf("%5d\n", n[1]); } return 0; }
C++ 源码:
#include <iostream> #include <iomanip> // std::setw #include <vector> // 一维数组 输出 杨辉三角形 int main() { using std::cout; using std::endl; using std::setw; using std::vector; constexpr size_t Line = 16; constexpr unsigned W = 5; size_t i, j; int n[Line+1]; cout << "\t\tPascal 三角形\n" << endl; cout << setw(W) << (n[1] = 1) << endl; for (i = 2; i != Line+1; ++i) { cout << setw(W) << (n[i] = 1); for (j = i-1; j != 1; --j) cout << setw(W) << (n[j] += n[j-1]); cout << setw(W) << n[1] << endl; } cout << endl << endl; using std::begin; using std::end; cout << setw(W) << (n[1] = 1) << endl; for (int *pl = begin(n)+2; pl != end(n); ++pl) { cout << setw(W) << (*pl = 1); for (int *pr = pl-1; pr != begin(n)+1; --pr) cout << setw(W) << (*pr += *(pr-1)); cout << setw(W) << n[1] << endl; } cout << endl << endl; int nn[Line] = {0}, t; bool beg = true; for (auto ll : nn) { beg = true; for (auto &mm : nn) if (beg && mm == 1) { cout << setw(W) << (t = mm = 1); beg = false; } else if (mm == 0) { cout << setw(W) << (mm = 1) << endl; break; } else { cout << setw(W) << (mm += t); t = mm-t; } } cout << endl << endl; vector<unsigned> v(Line, 0); cout << setw(W) << (v[0] = 1) << endl; for (i = 1; i != Line; ++i) { cout << setw(W) << (v[i] = 1); for (j = i-1; j != 0; --j) cout << setw(W) << (v[j] += v[j-1]); cout << setw(W) << v[0] << endl; } cout << endl << endl; for (auto &ll : v) { ll = 0; beg = true; for (auto &mm : v) if (beg && mm == 1) { cout << setw(W) << (t = mm = 1); beg = false; } else if (mm == 0) { cout << setw(W) << (mm = 1) << endl; break; } else { cout << setw(W) << (mm += t); t = mm-t; } } cout << endl << endl; cout << setw(W) << (v[0] = 1) << endl; for (vector<unsigned>::iterator it = v.begin()+1; it != v.end(); ++it) { cout << setw(W) << (*it = 1); for (vector<unsigned>::reverse_iterator rit(it); rit != v.rend()-1; ++rit) cout << setw(W) << (*rit += *(rit+1)); cout << setw(W) << *(v.cbegin()) << endl; } cout << endl << endl; return 0; }
浙公网安备 33010602011771号