C - Digital Path 计蒜客 - 42397

题意:

题意就是给出一个n ∗ m的数字矩阵每个矩阵元素之间只能上下左右走,而且下一个位置必须比当前位置的数字大1,入口和出口必须数边缘元素,求可以有多少条路径。

题解:

第一反应dfs,dfs+记忆化搜索+剪枝
vis[x][y]=1表示这个点能作为dfs的起点

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
const int maxn=1e6+9;
int vis[2000][2000];
int n,m;
int a[2000][2000];
int dp[2000][2000];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int sum=0;
bool f=0;
inline int dfs(int x,int y,int tot)
{if(dp[x][y])return dp[x][y];dp[x][y]=0;ll ans=0;int pp=0;for(int i=0;i<4;i++){int newx=x+dx[i];int newy=y+dy[i];if(newx>n||newx<1||newy>m||newy<1)continue;if(a[newx][newy]==a[x][y]+1){pp=1;ans=ans+dfs(newx,newy,tot+1);ans=ans%mod;}   }if(tot>=4&&pp==0)//如果长度大于4且已走到头 {return 1; }dp[x][y]+=ans;return dp[x][y]%mod;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);}}memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=0;k<4;k++){int newx=i+dx[k];int newy=j+dy[k];if(newx>n||newx<1||newy>m||newy<1)continue;if(a[newx][newy]==a[i][j]-1){vis[i][j]=1;}}}}ll ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(vis[i][j]==0){dp[i][j]=dfs(i,j,1);ans=ans+dp[i][j];ans=ans%mod;}}}cout<<ans%mod;
}

C - Digital Path 计蒜客 - 42397 05-29相关推荐

  1. C - Digital Path 计蒜客 - 42397(dp记忆化搜索)

    题目:vj地址 思路:dp[i][j][k]代表 以i,j结尾 有k长度的路径数量,k最大等于4,如果k超过4,也是等于4. 那么转移:dp[i][j][k]+={dp[x][y][k-1]}(x,y ...

  2. 计蒜客 挑战难题 爬楼梯

    计蒜客 挑战难题 爬楼梯 假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输 ...

  3. 无脑博士的试管们java_计蒜客 无脑博士和他的试管们

    标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...

  4. 最短路(遍历边)计蒜客—DD坐地铁

    题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi​表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...

  5. K - Triangle 计蒜客 - 42405

    K - Triangle 计蒜客 - 42405 题意: 给你一个三角形的三点,再给你三角形边上一个点,让你求另一个点(也要在三角形上),使得平分三角形的面积 题解: 计算几何 三角形的三边ab,ac ...

  6. H - Prince and Princess 计蒜客 - 42402

    H - Prince and Princess 计蒜客 - 42402 题意: 你现在要寻找公主,有三种人,第一种是说真话的人(至少为1,因为公主是说真话的人),第二种人是只会说假话的,第三种是胡说八 ...

  7. 计蒜客可以做计算机编程吗,如果你的编程能力不足以支撑你成为工程师的野心,不妨到计蒜客上学学看...

    在人才招聘领域存在这样一个怪圈,高校每年都说是最难就业年.人才过剩,而对于企业HR来说永远都招不到称心如意的人才.这个怪圈在"计蒜客"创始人俞昊然看来,主要是因为当今高校的教学资源 ...

  8. 计蒜客 - T1012 A*B问题

    计蒜客 - T1012 A*B问题 相信你已经学会 A+B 问题了,那么问题又来了- 输入两个正整数 A 和 B ,求 A×B. 输入格式 一行,包含两个正整数 A 和 B,中间用单个空格隔开. 1≤ ...

  9. 计蒜客网站 ACM-ICPC亚洲区赛题

    The Preliminary Contest for ICPC China Nanchang National Invitational(2019) ACM-ICPC Jiaozuo Onsite ...

最新文章

  1. openresty开发系列17--lua中的正则表达式
  2. php三元运算符要多个赋值,php让三元运算符用起来更简单的小技巧
  3. 【转载保存】推荐ApacheCN开源的一个机器学习路线图
  4. postgresql中装gis插件_使用PostGIS_高级扩展插件使用_开发进阶_云原生数仓 AnalyticDB PostgreSQL - 阿里云...
  5. Xshell连接mysql数据库乱码问题解决思路总结
  6. iOS 处理pfx文件
  7. mysql处理点云_Oracle云时代MySQL HTAP解决方案
  8. PostgreSQL 与 PostGIS
  9. export和import 输出/接收模块变量的接口
  10. 图片模糊处理批量生产模糊数据集
  11. 蚂蚁支付宝小程序开发从零开始[含demo]
  12. Axure8超详细使用教程(含安装包)
  13. 使用Elasticsearch和Kibana挖掘邮箱
  14. pygame 窗口标题和图标设置
  15. python 文件夹下所有文件_使用Python遍历文件夹下所有文件(包所有含子文件夹)...
  16. 使用自己训练的yolov3或yolov4模型自动标注成voc格式数据
  17. P-touch Editor 批量打印标签
  18. 零基础云开发一个投票小程序 | 我的投票列表页
  19. 强化学习训练Chrome小恐龙Dino:最高超过4000分
  20. 离散数学笔记(一)数理逻辑

热门文章

  1. linux http 分析工具,技术|httpstat:一个检查网站性能的 curl 统计分析工具
  2. 如何用matlab消除谐波,如何在含有整次谐波和非整次谐波的信号中去除整次谐波?...
  3. 一般将来时语法课教案_速看,如何在考场写出一篇脱颖而出的教案
  4. 代理管家app_亲亲小保社保管家app2021下载_亲亲小保社保管家app最新版下载
  5. 未来教育计算机二级Excel解析,Excel操作小技巧,助你学好计算机二级office!
  6. 一寸照纯红色底图片_和记场下载
  7. capslock键英语怎么读_刚开始读英文原版书该怎么做?商务英语专业有前途吗?...
  8. oracle查询案例,2道经典的oracle查询案例
  9. php正则匹配标点符号,php 正则匹配包含字母、数字以及下划线,且至少包含2种...
  10. java 判断object类型_Java 类继承机制