HDU P2032 杨辉三角形 解题报告
来源:互联网 发布:wrk 压力测试 windows 编辑:程序博客网 时间:2024/04/30 00:49
杨辉三角
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 27664 Accepted Submission(s): 11598
Problem Description
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
Output
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
题目分析
杨辉三角形又称帕斯卡三角形,组成的数就是组合数。
杨辉三角形有两种计算方法
一,定义法
杨辉三角形的P(i,j)位置上的数字等于P(i-1,j)+P(i-1,j-1)。
二,组合数法
P(i,j)=C(i-1,j)
注意问题
求结果的时候很容易想到递归法,然而对于数据范围30来说,递归就是华丽超时的节奏。解决方法主要有两个
一,采取记忆化搜索,开一个数组记录计算过的值。
二,直接运用定义法计算出整个答案,然后根据n的数值输出。
其实最最需要注意的是每一个杨辉三角后面加一个空行。这句话很多人会理解成最后一组不用输出。
AC代码如下(献丑)
#include<iostream>using namespace std;int c[31][31];void cal(){ c[0][0]=1; for (int i=1;i<31;i++) for (int j=0;j<=i;j++) { if (j==0) c[i][j]=1; else if (i==j) c[i][j]=1; else c[i][j]=c[i-1][j]+c[i-1][j-1]; }}int main(){ int n,time=0; cal(); while (cin>>n) { for (int i=0;i<n;i++) { for (int j=0;j<=i;j++) if (j==0) cout<<c[i][j]; else cout<<" "<<c[i][j]; cout<<endl; } cout<<endl; }}
- HDU P2032 杨辉三角形 解题报告
- 【九度OJ】题目1073:杨辉三角形 解题报告
- hdu2039三角形解题报告
- 杭电acm2091 hdu-acm-2091空心三角形解题报告
- hdu_2039_三角形_解题报告
- [CQOI2007]三角形tri 解题报告
- HDU 3342 解题报告
- HDU 3336 解题报告
- HDU 3335 解题报告
- hdu 2516解题报告
- hdu 1004解题报告
- hdu 2139解题报告
- hdu 1019解题报告
- hdu 1064 解题报告
- HDU 1113 解题报告
- hdu 1068 解题报告
- HDU:2050解题报告
- hdu 4001解题报告
- 多年的软件开发,学到了什么?
- 【推荐】同样的焦点图不同的写法
- 手动创建DataTable对象并绑定
- Android异步加载图像(含线程池,缓存方法)
- 设计模式系列5-建造者模式
- HDU P2032 杨辉三角形 解题报告
- CUDA, 用于大量数据的超级运算:第13节
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo
- 浅述Session的持久化的作用与原理
- 内部类 学习笔记(三)
- struct tm和time_t总结
- Supported Values for @SuppressWarnings
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程
- 一个月练好英语口语