条形图【2018.5.12】

题目

这里写图片描述


解题思路

根据题意,我们可以发现答案是呈一定的规律递增,所以我们可以想到动态规划.


代码

#include <cstdio>
using namespace std;
char f[101][101][61]; short n; int k=60;
void add(char a[61],char b[61],char c[61])
{
    int g=0;
    for (int i=1;i<=60;i++)
     a[i]=g+b[i]+c[i],g=a[i]/10,a[i]%=10;
}
int main(){
    freopen("diagrams.in","r",stdin);
    freopen("diagrams.out","w",stdout);
    scanf("%d",&n);
    for (int i=1;i<=n;i++) 
     f[i][0][1]=1;
    for (int i=1;i<=n;i++)
     for (int j=1;j<=i;j++) 
      add(f[i][j],f[i-1][j],f[i][j-1]);
    f[n][1][1]--;
    for (int i=1;i<=n;i++) 
      add(f[n][i],f[n][i],f[n][i-1]);
    while (!f[n][n][k]) k--;
    for (int i=k;i>=1;i--) putchar(f[n][n][i]+48);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_39897867/article/details/80298429