• poj1664放苹果


    此方法是看了别人的题解的,利用像dp的思维做,f[m][n] = f[m][n-1]+f[m-n][n],

    其中f[m][n]表示m个水果n个盘子时总的放的方法数,因为f[m][n]总可以

    通过有空盘子或者没空盘子来放,f[m][n-1]表示有空盘子的情况,而

    f[m-n][n]表示没有空盘子的情况,思路非常巧妙

    #include <iostream>

    using namespace std;

    int ans;

    int dfs(int m,int n)

    {

           if(m==1)

                  return 1;

           if(m<0)

                  return 0;

           if(n==1)

                  return 1;

           return dfs(m-n,n)+dfs(m,n-1);

    }

    int main()

    {

           freopen("sum.in","r",stdin);

           freopen("sum.out","w",stdout);

           int t;

           cin>>t;

           while(t--)

           {

                  int m,n;

                  ans = 0;

                  cin>>m>>n;

                  cout<<dfs(m,n)<<endl;

           }

           return 0;

    }

    我开始是跟这个方法差不多,但是选择的函数变量选择有点问题,

    导致总有些漏洞。。。

    #include <iostream>

    using namespace std;

    int m,n,ans;

    void dfs(int x,int y,int z)

    {            //已有的个数,已用盘子的个数,计算

           if(x==m)

           {

                  ans++;

                  return;

           }

           if(y==n)

                  return;

           for(int i=z;i<=m;i++)

                  dfs(x+i,y+1,i);

    }

    int main()

    {

           freopen("sum.in","r",stdin);

           freopen("sum.out","w",stdout);

           int t;

           cin>>t;

           while(t--)

           {

                  ans = 0;

                  cin>>m>>n;

                  dfs(0,0,1);

                  cout<<ans<<endl;

           }

           return 0;

    }

  • 相关阅读:
    前端页面获取各类页面尺寸及坐标尺寸总结
    禁止微信内置浏览器调整字体大小
    区分浏览器,判断浏览器版本
    JavaScript
    ASP.NET MVC,Entity Framework 及 Code First
    循序渐进MongoDB V3.4(Ubuntu)
    Webpack
    RequireJS Step by Step
    JavaScript Object 及相关操作
    ES6 Promises
  • 原文地址:https://www.cnblogs.com/yejinru/p/2407897.html
Copyright © 2020-2023  润新知