zoukankan      html  css  js  c++  java
  • UVA11137(立方数之和)

    题意:
          给你一个n(<=10000),问他如果由立方数之和组成,那么有多少种方法?
    思路: 
          一个地推公式,d[i][j] 表示用不大于i的数字去组合j这个数字有多少种方法,因为n<=10000所以i最大是21,最后答案就是d[21][n],地推公式是
    d[i][j] = d[i-1][j] + d[i][j-i*i*i];
    可以这样理解,d[i-1][j]好说,就是不用当前这个数,d[i][j-i*i*i]表示的是用i,同时
    for(i = j ;j <= n ;j ++)正着跑还能是的i用多次,想起了01和完全背包。


    #include<stdio.h>
    #include<string.h>


    long long d[23][10005];
         
    void solve()
    {
       for(int i = 1 ;i <= 10000 ;i ++)
       d[1][i] = 1;
       for(int i = 1 ;i <= 21 ;i ++)
       d[i][0] = 1;
       for(int i = 2 ;i <= 21 ;i ++)
       for(int j = 1 ;j <= 10000 ;j ++)
       {
          d[i][j] = d[i-1][j];
          if(j - i * i * i >= 0)
          d[i][j] += d[i][j-i*i*i];
       }
    }     


    int main()
    {
       int n;
       solve();
       while(~scanf("%d" ,&n))
       {
          printf("%lld " ,d[21][n]);
       }
       return 0;
    }

  • 相关阅读:
    Vue 下拉刷新及无限加载组件
    VUE常用问题hack修改
    CSS滤镜让图片模糊(毛玻璃效果)实例页面
    滑动删除
    拖动选择单元格并合并方法
    Windows7上开启ftp服务器功能
    js 向上滚屏
    理解Clip Path
    图标制作
    transition实现图片轮播
  • 原文地址:https://www.cnblogs.com/csnd/p/12062572.html
Copyright © 2011-2022 走看看