蚂蚁觅食

只饥饿的小蚂蚁外出觅食,幸运的的小蚂蚁发现了好多食物。
但是这些食物位于一个N∗M的方格魔法阵的右下角,而小蚂蚁位于方格法阵的左上角。
并且小蚂蚁被施展了魔法,它只能向下或者向右走。
请你帮助小蚂蚁计算一下,它一共有多少条路可以走到有食物的方格。

输入格式

多组输入,

每一组两个正整数N, M (N,M≤30)。表示一个方格魔法阵。

输出格式

一个整数表示一共有多少条路。

样例

Input
2 3
单击复制

Output
3
单击复制
计算(1,1)到达(n,m)有几条路径,把dp[n][m]等于1,其他值为0 ,然后循环进行遍历,每次经过【n】[m]变加1,所得值即为所求
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll dp[35][35];
int dx[2]={1,0};
int dy[2]={0,1};
int n,m;

ll dfs(int x,int y){
if(dp[x][y]) return dp[x][y];
for(int i=0;i<2;i++)
{
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>0&&tx<=n&&ty>0&&ty<=m)
{
dp[x][y]+=dfs(tx,ty);
}
}
return dp[x][y];
}

int main(){

while(cin>>n>>m)
{
	memset(dp,0,sizeof(dp));
	dp[n][m]=1;
	ll ans=dfs(1,1);//运用dfs进行遍历
	cout<<ans<<endl;
}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值