文章

4

粉丝

422

获赞

13

访问

42.2k

头像
C++递归解法,有注释
P1392 西北工业大学
发布于2020年4月1日 17:13
阅读数 11.1k

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

int func (int i, int j) {
	if (j == 1 || j == i + 1)//每行的边界为 1 
		return 1;
	else  return (func(i - 1, j - 1) + func(i - 1, j));
	
	/* 
	杨辉三角形在数组中排列为 1 1
							 1 2 1
							 1 3 3 1
							 1 4 6 4 1
							 。。。。 
	所以当前位置的值,为左上的值和正上的值的和。
	*/ 
}

int main () {
	int n;
	while (cin >> n) {
		for(int i = 1; i < n; ++i){         //行 
			for(int j = 1; j <= i+1; ++j)  //列,第 i 行有 i+1 列 
				cout << func(i, j) << " ";
			cout << endl;
		}
	}	
}

//用递归复杂度会更高,也不好想 ,除非题目要求,建议用数组或队列 

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发