小球和箱子

/*
将n个不同的球放入m个不同的盒子的方案数
m^n
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,a[1010],l;
int main()
{
    scanf("%d%d",&n,&m);
    int k=m;
    while(k)
      {
          a[++l]=k%10;
          k=k/10;
      }
    for(int i=2;i<=n;i++)
      {
          for(int j=1;j<=l;j++)a[j]=a[j]*m;
          for(int j=1;j<=l;j++)
            if(a[j]>9)
              {
                a[j+1]+=a[j]/10;
                a[j]=a[j]%10;
            }
        if(a[l+1])l++;
      }
    for(int i=l;i>=1;i--)
      printf("%d",a[i]);
    return 0;
}
/*
将n个相同的球放入m个不同的盒子的方案数
x1+x2+...+xm=n
都加1 x1+x2+...+xm+m=n+m 每个解不为0
直接隔板法 C(m-1,m+n-1)
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
int main()
{
    scanf("%d%d",&n,&m);
    int p=m-1;
    int q=m+n-1;
    int sum=1,div=1;
    for(int i=q;i>=q-p+1;i--)
      sum*=i;
    for(int i=1;i<=p;i++)
      div*=i;
    printf("%d\n",sum/div);
    return 0;
}
/*
将n个相同的球放入m个相同的盒子的方案数
f[i][j]=f[i][j-i]+f[i-1][j];
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int T,n,m,f[100][100];
int Dfs(int k,int p)
{
    if(k==0||p==1)return 1;
    if(f[k][p])return f[k][p];
    if(p>k)return Dfs(k,k);
    return Dfs(k,p-1)+Dfs(k-p,p);
}
int main()
{
    scanf("%d",&T);
    while(T--)
      {
          memset(f,0,sizeof(f));
          scanf("%d%d",&n,&m);
        printf("%d\n",Dfs(n,m));
      }
    return 0;
}
/*
将n个不同的球放入m个相同箱子里的方案数
F[i][j]=f[i-1][j-1]+f[i-1][j]*j;
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,f[100][100];
int main()
{
    scanf("%d%d",&n,&m);
    f[0][0]=1;
    for(int i=1;i<=n;i++)
      for(int j=1;j<=i&&j<=m;j++)
        f[i][j]=f[i-1][j-1]+f[i-1][j]*j;
    printf("%d\n",f[n][m]);
    return 0;
}
时间: 2024-10-15 08:22:03

小球和箱子的相关文章

Unity3D游戏开发初探

一.预备知识-对象的"生"与"死" (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的"指哪打哪"例子为基础,在AddForce脚本写入以下代码:   其中在CreateCube方法中,使用GameObject.CreatePrimitive方法来创建Cube类型的游戏对象实例,设置了它出现的坐标并为它增加刚体组件.这里可以看下AddCo

小tips:用java模拟小球做抛物线运动

这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我调试了很久,上网也找了很多资料,但是没有那种适合我们小白的教程,于是我简单讲讲我的思路.我将从如何画一个小球开始到一步步实现小球进行抛物线运动.嘿嘿!! 一.任务分解 现在我们来做抛物线运动的小球,先不急写代码,先来想象一下做好的结果是什么样子的.我将这个任务分成三步,第一步,画一个小球:第二步,该

完美世界笔试题---小球弹性碰撞

题目描述: 时间限制:c/c++语言1000MS: 其它语言3000MS 内存限制:c/c++语言65536KB:其他语言589824KB 如下图一个类似手机屏幕的矩形区域,宽度为w,高度为h,一个小球(视为质点,忽略其体积大小)初始位于底边距离左侧x的位置,向右上角45度发射.当小球碰到边界时,按完全弹性碰撞理想反弹,如果小球恰好碰到角落,则反向返回.如此无限循环. 请编写程序,输出前n次小球回到底边时的横坐标(首次发射时的不算). 输入: 每个输入是一行依次表示为w,h,x,n的4个正整数,

[bzoj1867][Noi1999][钉子和小球] (动态规划)

Description Input 第1行为整数n(2<=n<=50)和m(0<=m<=n).以下n行依次为木板上从上至下n行钉子的信息,每行中‘*’表示钉子还在,‘.’表示钉子被拔去,注意在这n行中空格符可能出现在任何位置. Output 仅一行,是一个既约分数(0写成0/1),为小球落在编号为m的格子中的概pm.既约分数的定义:A/B是既约分数,当且仅当A.B为正整数且A和B没有大于1的公因子. Sample Input 5 2 Sample Output 7/16 Solut

UVa 679小球下落(二叉树的编号)

题意:二叉树按层次遍历从1开始标号,所有叶子结点深度相同,每个结点开关初始状态皆为关闭,小球从根结点开始下落(小球落在结点开关上会使结点开关状态改变),若结点开关关闭,则小球往左走,否则往右走,给定二叉树深度D,求第I个小球所落到的叶子结点编号. 分析:对于每一个结点,若小球当前编号为k, k为奇数,则这个小球是第(k+1)/2个落在此处的,则往左走; k为偶数,则这个小球是第k/2个落在此处的,则往右走; 从根结点到叶子结点需判断D-1次. 比如,假如I为15,则这是第15个落在根结点的小球,

canvas 模拟小球上抛运动的物理效果

最近一直想用学的canvas做一个漂亮的小应用,但是,发现事情并不是想的那么简单.比如,游戏的逼真效果,需要自己来coding…… 所以,自己又先做了一个小demo,算是体验一下亲手打造物理引擎的感觉吧.*_* 代码效果预览地址:http://code.w3ctech.com/detail/2524 html: 1 <div class="container"> 2 <canvas id="canvas" style="border:1p

hihoCoder_推箱子

一.题目 题目1 : 推箱子 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 推箱子是一款经典游戏.如图所示,灰色格子代表不能通过区域,蓝色方格是箱子,黑色圆形代表玩家,含有圆点的格子代表目标点. 规定以下规则: 1.一局游戏中只会有一个箱子,一个玩家和一个目标点. 2.通过方向键控制玩家移动. 3.图中的灰色格子代表墙壁,玩家与箱子都不能通过. 4.推到墙壁的箱子,就无法再将箱子推离墙壁,因为玩家无法到达箱子靠墙壁的一侧去推箱子.也就是说箱子只能以"被推"

致佳音: 推箱子游戏自动求解算法设计(一)

本来酷爱音乐, 老衲也想谱一曲<献给爱丽丝>之类, 通俗又有境界的曲子, 奈何没有那个水平, 也不是一个程序员做的勾当,于是就有了本文. 希望莲花妹妹跟着思路走,能遗忘那些太多的忧伤-- 本文分以下四个小节: 一.平面寻路算法(Alpha Star) 二.闭合图形填充算法(扫描线种子填充) 三.推箱子求解 四.执行效率的优化 日本人有个程序叫Sokuban Automatic Solver,文件名是sokoban722.exe我附带在资源里面 不过日本人的东西没有开源,我们也不知道它里面的花花

致佳音: 推箱子游戏自动求解算法设计(二)

这一个小节我们说一说传说中的A×算法,其实之前也上传过类似的小件件,这里我们就去剖析一下它 毕竟在游戏程序,我们要从一点移动到另一点,并得到最短路程的轨迹,类似这种算法还有好几种,执行效率都差不多,不过大多不能得到轨迹 首先,从一点移动到另一点,最快就是直接走过去了,就像小男生爱上小女生,最好的办法就是直接走到她面前说:我爱你 不过理想状态,几乎是没有的,弯路那是必然的经过,有曲线,其实更美-- 那么弯路该怎么走呢,是不是先去背景看下毛主席,再去三亚晒个太阳,再回来告诉她外面的世界好美,不,不,