汤圆の糖
Time Limit: 1000MS Memory limit: 65536K
题目描述
又到了汤圆星球一年一度的汤圆节了,在汤圆的世界里,分为好多种汤圆,比如说巧克力味儿的,橙子味儿的,哈密瓜味儿的,臭脚丫味儿的。
小花儿特别喜欢吃汤圆,今天她要自己动手煮汤圆。汤圆刚开始是放在一个n*m的盒子中的,小花儿拿汤圆第一次肯定会从最左上角(1,1)拿一个汤圆下锅,之后她只能向下拿(2,1)或者向右拿(1,2),直到拿到(n,m)结束。问小花儿有多少种不同的取法?
小花儿特别喜欢吃汤圆,今天她要自己动手煮汤圆。汤圆刚开始是放在一个n*m的盒子中的,小花儿拿汤圆第一次肯定会从最左上角(1,1)拿一个汤圆下锅,之后她只能向下拿(2,1)或者向右拿(1,2),直到拿到(n,m)结束。问小花儿有多少种不同的取法?
输入
多组测试数据,处理到文件结束。
每行2个数字n,m,中间用空格隔开。(1 <=n,m <= 1000)
每行2个数字n,m,中间用空格隔开。(1 <=n,m <= 1000)
输出
由于方法的数量可能很大,只需要输出答案对1000000007取余的结果。
示例输入
2 3
示例输出
3
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
long a[1010][1010];
int main()
{
int n,m,i,j;
while(~scanf("%d %d",&n,&m))
{
for(i=1;i<=n;i++) //最上面一行只能从左边来,所以将最上面一行设置为1
a[1][i]=1;
for(i=1;i<=m;i++) //最左面一行只能从上面来,将最左面一列设置为1
a[i][1]=1;
for(i=2;i<=m;i++)
for(j=2;j<=n;j++)
a[i][j]=(a[i-1][j]+a[i][j-1])%1000000007;//其余每个的个数等于来自上面一个的加上来自左面一个的个数
printf("%ld\n",a[m][n]);
}
return 0;
}