ACM/ICPC 之 一道不太简单的DP面试题(Geeksforgeeks)
题面来源:geeksforgeeks/1993
题目简述:给一个m*n的矩阵,计算从(1,1)到(m,n)的所有不回退路径中,经过k次转向后的路径有多少条
输入T个样例,每个样例三个数据,依次是m,n,k。
输出路径条数。
给个题解中的图解:

测试数据:
Sample Input
3
2 2 3
2 3 1
4 4 4
Sample Output
2
2
18
已经贴了题面来源就暂时不贴全部的题目了,偶然发现了这道DP,貌似是FB的面试题,是道非常好的题目。
测试代码如下(建议尝试一次):
#include<iostream>
using namespace std; #define MAX 100 //dp[i][j][k][d]
//从(0,0)->(i,j)经过k次转向,且上一次经过d的总路径
//d = 0: 横; d=1: 竖
int dp[MAX][MAX][MAX][]; int countPathsUtil(int i, int j, int k, int d)
{
if (i < || j < )
return ; if (i == && j == ) //到达原点
return ; if (k == )
{
if (d == && i == ) return ; //到左侧边,且为竖向
if (d == && j == ) return ; //到顶侧边,且为横向
return ;
} //记忆化
if (dp[i][j][k][d] != -)
return dp[i][j][k][d]; if (d == ) //若横向走
return dp[i][j][k][d] = countPathsUtil(i, j - , k, d) + //继续横向
countPathsUtil(i - , j, k - , !d); //转向
//竖向同理
return dp[i][j][k][d] = countPathsUtil(i - , j, k, d) + //继续竖向
countPathsUtil(i, j - , k - , !d); //转向
} int countPaths(int i, int j, int k)
{
if (i == && j == )
return ;
memset(dp, -, sizeof dp); return countPathsUtil(i - , j, k, ) + // 减治到上格
countPathsUtil(i, j - , k, ); // 减治到左格
} int main()
{
int m = , n = , k = ;
cout << countPaths(m - , n - , k) << endl;
return ;
}
= 。=
ACM/ICPC 之 一道不太简单的DP面试题(Geeksforgeeks)的更多相关文章
- ACM/ICPC 之 最短路-Floyd+SPFA(BFS)+DP(ZOJ1232)
这是一道非常好的题目,融合了很多知识点. ZOJ1232-Adventrue of Super Mario 这一题折磨我挺长时间的,不过最后做出来非常开心啊,哇咔咔咔 题意就不累述了,注释有写,难点在 ...
- 2013 ACM/ICPC Asia Regional Changsha Online - G(DP)
第一眼就想到DP,然后想了N久就想不到可以不重算的DP 最后没办法了 先算出来 再去重.. 因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都 ...
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 【转】ACM/ICPC生涯总结暨退役宣言—alpc55
转自:http://hi.baidu.com/accplaystation/item/ca4c2ec565fa0b7fced4f811 ACM/ICPC生涯总结暨退役宣言—alpc55 前言 早就该写 ...
- 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 2017 ACM/ICPC Asia Regional Qingdao Online
Apple Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submi ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- ACM - ICPC World Finals 2013 C Surely You Congest
原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 题目翻译: 试题来源 ACM/ICPC World Fin ...
随机推荐
- SQL 查询总结
参考资料: SELECT 查询语句格式与简单查询 SQL中distinct的用法 SQL 查询总结
- ASP.NET中最保险最环保的返回404的方法
代码如下: Response.StatusCode = 404; Response.SuppressContent = true; Context.ApplicationInstance.Comple ...
- Tomcat 6 --- 你很少使用的安全管理SecurityManager
试想一下,如果你的JSP页面中包含一句代码“System.exit(1);”,你的web应用访问到该JSP时,会发生什么? 一般使用tomcat可能都没有注意到这个问题,本篇主要讲述tomcat 6中 ...
- 一段可以使用的 hibernate获得对象->action存入List->jsp页面用<s:iterator>迭代的代码
SelectAction.java @SuppressWarnings("serial") @Component("selectAction") @Scope( ...
- 怎样更改wordpress登陆 URL防止恶意注册
WP 默认的登陆 URL 是 wp-login.php或wp-admin.php,许多spamer会根据这些footprint来收集可注册的wordpress站点,然后你的站内就多出许多垃圾评论.如果 ...
- Ubuntu 14 安装Java(JRE、JDK)
JRE vs OpenJDK vs Oracle JDK JRE(Java Runtime Environment),它是你运行一个基于Java语言应用程序的所正常需要的环境.如果你不是一个程序员的话 ...
- hash-3.hashCode
1.有一个类Person,有两个字段age和name,我重写Object类的equal方法来比较两个对象的age和name是否相等,但是不重写hashCode. package com.hash; p ...
- webApp前端开发技巧总结
自Iphone和Android这两个牛逼的手机操作系统发布以来,在互联网界从此就多了一个新的名词-WebApp(意为基于WEB形式的应用程序,运行在高端的移动终端设备.我相信各位童鞋应该和我一个样子, ...
- php综合应用
php面试题之五--PHP综合应用(高级部分) 五.PHP综合应用 1.写出下列服务的用途和默认端口(新浪网技术部) ftp.ssh.http.telnet.https ftp:File Transf ...
- mongodb安装 window
安装MongoDB 1.按照操作系统下载http://www.mongodb.org/downloads. 2.在D盘新建MongoDB文件夹(此文件夹为自定义的数据库安装目录D:\MongoDB)把 ...