文章

16

粉丝

0

获赞

34

访问

693

头像
路径计数 题解:
P8730 合肥工业大学2025年机试题
发布于2026年3月25日 18:06
阅读数 32

这题,用dfs百分百超时

本题求的是路径数,并且限制了只能向下走和向右走

首先考虑2x2的格子,对于右下角的格子,路径就是右->下和下->右,恰好就是前往终点格子上面与左边的路径之和

再考虑3x3的格子,发现前往最上边的任意格子或最左边的任意格子,路径都是只有一条(这是由只能向下和向右走决定的)

而其他格子的路径数,恰好也是前往这个格子上面与左面的路径之和

故使用动态规划,dp[i][j]表示前往(i,j)这个格子的总路径数

#include <bits/stdc++.h>
using namespace std;

const int maxn = 105;

long long dp[maxn][maxn];
bool vis[maxn][maxn];


int main()
{
	memset(dp,1,sizeof(dp));
	memset(vis,false,sizeof(vis));
	long long m,n;
	cin >> m >> n;
	for(long long i = 0;i < m;++i)
	{
		for(long long j = 0;j < n;++j)
		{
			if(i - 1 < 0 || j - 1 < 0)// 最上边 最左边
			{
				dp[i][j] = 1;
				continue;
			}
			else
			{
				dp[i][j] = dp[i-1][j] + dp[i][j-1];
			}
		}
	
	}
	cout << dp[m-1][n-1] << endl;
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发