楼主: lausteven
跳转到指定楼层
上一主题 下一主题
收起左侧

facebook 电话+onsite

 
🔗
wooo 2017-11-9 05:46:08 | 只看该作者
全局:
zhonghuazai 发表于 2017-11-9 05:16
不知道是不是我题意理解错了,初始位置在0,假如只能走一步的话,只能到5或者7,那就是只有两种走法。按 ...

同感!除非题目是从任意点开始走
回复

使用道具 举报

全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
zhonghuazai 2017-11-15 12:03:06 | 只看该作者
全局:
chengshuangdao 发表于 2017-11-9 10:41
如果起始是0的话,最好用那种top-down的dp,用递归写dfs,但是用一个dp数组储存子路径的结果,应该比我这 ...

其实我觉得完全不用dp, 直接dfs就可以了。
回复

使用道具 举报

🔗
chengshuangdao 2017-11-15 12:18:31 | 只看该作者
全局:
zhonghuazai 发表于 2017-11-15 12:03
其实我觉得完全不用dp, 直接dfs就可以了。

可以用dp数组储存重复运算的结果,可以修剪dfs搜索树的大小
回复

使用道具 举报

🔗
chengshuangdao 2017-11-15 12:38:18 | 只看该作者
全局:
还是写了一下,类似于这样
  1. public int numOfPaths(int n) {
  2.     int[][] dp = new int[n][10];
  3.     return dfs(n, 0, dp);
  4.   }
  5.   
  6.   private int dfs(int n, int curr, int[][] dp) {
  7.     if(n == 0) return 1;
  8.     if(dp[n-1][curr] > 0) return dp[n-1][curr];
  9.    
  10.     if(curr == 0) {
  11.       dp[n-1][curr] = dfs(n-1, 5, dp) + dfs(n-1, 7, dp);
  12.     }else if(curr == 1) {
  13.       dp[n-1][curr] = dfs(n-1, 6, dp) + dfs(n-1, 8, dp);
  14.     }else if(curr == 2) {
  15.       dp[n-1][curr] = dfs(n-1, 3, dp) + dfs(n-1, 7, dp);
  16.     }else if(curr == 3) {
  17.       dp[n-1][curr] = dfs(n-1, 2, dp) + dfs(n-1, 8, dp) + dfs(n-1, 9, dp);
  18.     }else if(curr == 4) {
  19.       dp[n-1][curr] = 0;
  20.     }else if(curr == 5) {
  21.       dp[n-1][curr] = dfs(n-1, 0, dp) + dfs(n-1, 6, dp) + dfs(n-1, 9, dp);
  22.     }else if(curr == 6) {
  23.       dp[n-1][curr] = dfs(n-1, 1, dp) + dfs(n-1, 5, dp);
  24.     }else if(curr == 7) {
  25.       dp[n-1][curr] = dfs(n-1, 0, dp) + dfs(n-1, 2, dp);
  26.     }else if(curr == 8) {
  27.       dp[n-1][curr] = dfs(n-1, 1, dp) + dfs(n-1, 3, dp);
  28.     }else{
  29.       dp[n-1][curr] = dfs(n-1, 3, dp) + dfs(n-1, 5, dp);
  30.     }
  31.    
  32.     return dp[n-1][curr];

  33.   }
复制代码

评分

参与人数 1大米 +3 收起 理由
bambloo + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表