码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ 方案数量

时间:2018-08-14 18:48:06      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:end   stdio.h   ==   wrong   递推   style   ||   备忘   cin   

1、递归求解(直接递归会超时,要用备忘录法)

# include<iostream>
# include<stdio.h>
#include <map>
using namespace std;
map<long long,long long> mp;
long long DG(long long n,long long m)
{
    if(n==1 || m==1)
    {
        return 1;
    }
    else
    {
        long long k = 33*n+467*n+n*1386430+m+35465*n;
        if(mp.count(k))
        {
            return mp[k];
        }
        else                                            //
        {
            long long value = DG(n-1,m) + DG(n,m-1);        //int value = DG(n-1,m) + DG(n,m-1)+2   wrong
            mp[k] = value;
            return value;
        }

    }
}
int main()
{
      long long n,m;
      cin>>n>>m;
      while(n!=0 || m!=0)
      {
          cout<<DG(n+1,m+1)<<endl;
          cin>>n>>m;
          mp.clear(); 
      }
    return 0; }

2、递推

# include<iostream>
# include<stdio.h>
using namespace std;
long long d[40][40];
int main()
{
      int n,m;
      int i,j; 
      cin>>n>>m;
      while(n!=0 || m!=0)
      {

          for(i=0;i<=n;i++)
          {
              for(j=0;j<=m;j++)
            {
                if(i==0||j==0)
                    d[i][j] = 1;
                else
                    d[i][j] = d[i-1][j] + d[i][j-1];     
            }    
        }

        cout<<d[n][m]<<endl;
          cin>>n>>m;
    }
    return 0;
} 

 

NYOJ 方案数量

标签:end   stdio.h   ==   wrong   递推   style   ||   备忘   cin   

原文地址:https://www.cnblogs.com/fzuhyj/p/9476270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!