51nod1118 - 机器人走方格 - 简单DP
思路
不是搜索!不是搜索!不是搜索!
是DP!!!
好不容易才A了,好菜……
考虑我们处于位置 (𝑖,𝑗),都有哪些位置可以走到 (𝑖,𝑗) 呢? (𝑖−1,𝑗),(𝑖,𝑗−1),并且这两种不同的走法对应的方案完全不同。这恰好符合杨辉三角的递推关系。 在初始位置 (0,0) 只有 1 种走法,在所有 (0,𝑥),(𝑥,0) 的位置,也只有 1 种走法。其他位置的方案数: 𝐹(𝑖,𝑗)=𝐹(𝑖−1,𝑗)+𝐹(𝑖,𝑗−1)
因此最终方法的数量恰好对应杨辉三角的第 𝑛 行第 𝑚 列的值。
AC代码
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
ll dp[1010][1010];
const ll mod=1e9+7;
int main()
{
int m,n;
cin>>m>>n;
//dp[1][1]=1;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(i==1&&j==1)
dp[1][1]=1; // continue; 或者直接在开头dp[1][1],这里只需要有一个语句就行
else
dp[i][j]=(dp[i][j]%mod+dp[i-1][j]%mod+dp[i][j-1]%mod)%mod;
}
}
cout<<dp[m][n]<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」