Initiate

Call A Spade a Spade
posts - 14, comments - 3, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

PKU1664

Posted on 2010-02-09 20:44 Initiate 阅读(165) 评论(0)  编辑 收藏 引用

递推。考虑最小的一个

f(m,n)=f(m,n-1)+f(m-n,n);

所有的方案=最少的一个盘子没有,m个全在其他N-1个中 + 最少盘子里至少有一个,即每个盘子里都至少有一个

  • Source Code
    #include<iostream>
    using namespace std;
    int t,n,m;
    int f(int a,int b)
    {
     if(a<0) return 0;
     if(a==0 || b==1 ||a==1) return 1;
     return f(a,b-1)+f(a-b,b);
     }
    int main()
    {
     cin>>t;
     while(t--)
     {
      cin>>m>>n;
      cout<<f(m,n)<<endl;
      }
     return 0;
     }
  • 阅读全文
    类别:默认分类 查看评论

    只有注册用户登录后才能发表评论。
    网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理