ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

路径计数动态规划dp题目

2022-03-06 18:00:06  阅读:142  来源: 互联网

标签:输出 题目 int 样例 计数 格式 正整数 dp 105


 

题解分析等闲了就补上(doge),慢慢更新ing


路径计数

比较经典常见的动态规划dp题目了

问题描述

有一个n×n的网格,有些格子是可以通行的,有些格子是障碍。

一开始你在左上角的位置,你可以每一步往下或者往右走,问有多少种走到右下角的方案。

由于答案很大,输出对1e9+7取模的结果。

输入格式

第一行一个正整数n。

接下来n行,每行n个正整数,1表示可以通行,0表示不能通行。

输出格式

一个整数,表示答案。

样例输入

3
1 1 1
1 0 1
1 1 1

样例输出

2

代码

#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;

int main()
{
	int a, n;
	scanf("%d", &n);
	bool is[105][105];
	int f[105][105];
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= n; j++)
			scanf("%d", &is[i][j]);
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= n; j++) {
			if(!is[i][j])
				f[i][j] = 0;
			else {
				if(i == 1 && j == 1) {
					f[i][j] = 1;
					continue;
				}
				if(i == 1 && j != 1) {
					f[i][j] = f[i][j - 1];
					continue;
				}
				if(i != 1 && j == 1) {
					f[i][j] = f[i - 1][j];
					continue;
				}
				f[i][j] = (f[i - 1][j] % mod + f[i][j - 1] % mod) % mod;
			}
		}
	}
	printf("%d", f[n][n]);
	return 0;
}

补充

求余运算规则
设正整数x,y,p,求余符号为%。
对于加法运算:(x + y) % p = (x % p + y % p) % p
对于乘法运算:(x * y) % p = [(x % p) * (y % p)] % p

标签:输出,题目,int,样例,计数,格式,正整数,dp,105
来源: https://www.cnblogs.com/chr1ce/p/15972800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有