ADV-153 数的划分

来源:互联网 发布:oppo手机mac地址查询 编辑:程序博客网 时间:2024/05/12 15:30
问题描述
  一个正整数可以划分为多个正整数的和,比如n=3时:
  3;1+2;1+1+1;
  共有三种划分方法。
  给出一个正整数,问有多少种划分方法。
输入格式
  一个正整数n
输出格式
  一个正整数,表示划分方案数
样例输入
3
样例输出
3
数据规模和约定

  n<=100

1.

#include <stdio.h>int main(){int n,i,j,sum=0;int a[105][105]={0};scanf("%d",&n);for(i=1;i<=n;i++){a[i][1]=1; }for(i=2;i<=n;i++){for(j=2;j<=i;j++){a[i][j]=a[i-1][j-1]+a[i-j][j];}}for(i=1;i<=n;i++){sum+=a[n][i];}printf("%d",sum);return 0;}

2.

#include <iostream>#include <cmath>using namespace std;int main(){int i,j,n,sum = 0;cin>>n;int dp[105][105] = {0};for(i = 1 ; i <= n ; i ++)dp[i][1] = 1;for(i = 2 ; i <= n ; i ++){for(j = 2 ; j <= i ; j ++)dp[i][j] = dp[i-1][j-1]+dp[i-j][j];}for(i = 1 ; i <= n ; i ++)sum += dp[n][i];cout<<sum<<endl;return 0;}


原创粉丝点击