继续动态规划。

又一个动态规划了,智商不够用。

Description

 这个日常一点也不日常,这就是这个动漫的真实写照。比如,这就是一件“日常”中所发生的微妙的小事。

人造人名乃的梦想就是被作为正常人来看待,然而不幸的是,她的背后有一个很大的发条(一个没有实际作用的发条)。于是,体育课上做不了俯卧式跳高,踢足球时因为这个而造成越位犯规,无法左右靠背的椅子,睡觉时也无法仰睡……总之,不幸啊。
有一天名乃发现了这个发条的秘密。现有m种钥匙,每一种都有无限多把,有n把锁,每把锁只有一种钥匙可以打开。且已知,要打开所有的锁,每种钥匙至少使用一次。如果同时打开了所有的锁,名乃就有机会摘下背后的发条。问名乃有多少种尝试可能?
Input
每一行有一个m和n(1<m<=n<1000)
Output
每一行输出一个可能的个数(模10007取余)
Sample Input
1 2
2 4
Sample Output
1
14
#include <stdio.h>
#include <stdlib.h>
#define div 10007
/*==============
假设其中一把锁用一个钥匙打开,
那么剩下的要用m-1把钥匙(m把必用完)
f[n][m]=m*(f[n-1][m]+f[n-1][m-1])
===============*/
int ans[1010][1010]={0};
int main()
{
    int i ,j;
    int m,n;
    ans[0][0]=1;
    for(i=1;i<=1000;i++)
    {
        ans[i][1]=1;
        for(j=1;j<=1000;j++)
        {
            ans[i][j]=j*(ans[i-1][j-1]+ans[i-1][j])%div;
        }
    }
    while(scanf("%d %d",&m,&n)!=EOF)
    {
        printf("%d\n",ans[n][m]%div);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值