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

刚面完的snapchat 估计挂了

🔗
kemeng1314 2016-4-12 08:50:52 | 只看该作者
全局:
hedayue 发表于 2016-4-12 01:04
可以返回走之前走过的~~ 我也是被这个条件给困住了

能否用queue做bfs的思路呢,每次更新queue的时候保证从n到n+1步不会重叠。
回复

使用道具 举报

🔗
 楼主| hedayue 2016-4-12 21:36:43 | 只看该作者
全局:
kemeng1314 发表于 2016-4-12 08:50
能否用queue做bfs的思路呢,每次更新queue的时候保证从n到n+1步不会重叠。

bfs用来数所有的possible way不好做吧
回复

使用道具 举报

🔗
 楼主| hedayue 2016-4-12 21:37:08 | 只看该作者
全局:
xzt8350 发表于 2016-4-12 05:55
我也收到据信啦~

再接再厉!
回复

使用道具 举报

🔗
Jinyu_cs 2016-4-12 21:52:26 | 只看该作者
本楼:
全局:
加油加油~
回复

使用道具 举报

🔗
kemeng1314 2016-4-13 10:33:46 | 只看该作者
全局:
hedayue 发表于 2016-4-12 21:36
bfs用来数所有的possible way不好做吧

我code写了下,感觉还可以,不知是否满足题意

public static int moveWaysFromAToB(int boardLength, int k, int Ax, int Ay, int Bx. int By) {
   
      int edgeX = boardLength-1;
      int edgeY = boardLength-1;
      int count = 0;
      int ways = 0;
   
      int[][] dir = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
      int[][] visit = new int[boardLength][boardLength];
      // find possible points after K steps.
   
      Queue<Point> que = new LinkedList<>();
      que.offer(new Point(Ax,Ay,0));
      visit[Ax][Ay] = 1;
   
      while (que.size()>0) {
         Point p = que.peek();
         if (p.l == k) break;
        
         visit[p.x][p.y] = 0;
        
         que.poll();
           
         int newX = p.x+xShift;
         int newY = p.y+yShift;
           
         for (int[] d:dir) {
           if (newX<0 || newX>=edgeX) continue;
           if (newY<0 || newY>=edgeY) continue;
           if (visit[newX][newY] == 1) continue;
              
           que.offer(new Point(newX,newY,p.l+1));
           visit[newX][newY] = 1;
              
         }
           
      }
        
         
      while (que.size()>0) {
        Point p = que.poll();        
        if (p.x == B.x && p.y == B.y) ways++;
      }
   
  
      return ways;
  }
回复

使用道具 举报

🔗
kemeng1314 2016-4-13 10:37:57 | 只看该作者
全局:
kemeng1314 发表于 2016-4-13 10:33
我code写了下,感觉还可以,不知是否满足题意

public static int moveWaysFromAToB(int boardLength, ...

思路就是queue的头结点poll出来时候,当成没有visit过,这样符合可以走之前走过的坐标。然后把它相邻的八个点再依次放入queue,每放入新的点需要先保证同一层没有别的事先走过。当第一次peek出来的点是K 距离时就把当前所有点都判断一遍,是B点的算一种走法。
回复

使用道具 举报

🔗
kemeng1314 2016-4-13 11:09:47 | 只看该作者
全局:
kemeng1314 发表于 2016-4-13 10:37
思路就是queue的头结点poll出来时候,当成没有visit过,这样符合可以走之前走过的坐标。然后把它相邻的八 ...

哦不好意思,其实不用visit记录,任何点都不用记录是否走过。把visit都统一删去就行,这里只是担心queue会存越来越多的点,如果k比较大的情况下。1*8*8*...
回复

使用道具 举报

🔗
TsengJuiWang 2016-4-26 11:05:17 | 只看该作者
全局:
想问楼主两个问题:
第一题的DP解法是不是L(i,j,k)这种,然后按照步长计算L(i,j,k) = sum(eight_neigbors(m, n, k - 1))?
最后一道题GetToken是怎么实现的,是需要自己解析一个XML string吗?
谢谢
回复

使用道具 举报

🔗
 楼主| hedayue 2016-4-27 05:16:32 | 只看该作者
全局:

谢谢啦~   消息居然被隐掉了 刚才看见~~  
回复

使用道具 举报

🔗
 楼主| hedayue 2016-4-27 05:23:40 | 只看该作者
全局:
TsengJuiWang 发表于 2016-4-26 11:05
想问楼主两个问题:
第一题的DP解法是不是L(i,j,k)这种,然后按照步长计算L(i,j,k) = sum(eight_neigbors( ...

第一题的DP就说了下思路,没有具体写。我觉得你说的应该是对的~  
最后一个题 gettoken就是get到下一个xml元素。
我记不太清楚了哈  但是input是一个String, 里面有很多xml element,每次调用 就返回期中一个element。
回复

使用道具 举报

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

本版积分规则

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