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

11/23 狗家 onsite

🔗
xiangjn_alex 2016-11-27 12:12:37 | 只看该作者
全局:
catinclay 发表于 2016-11-26 09:23
哈哈 我說的二維dp是palindrome那題
另一題確實是要三維dp

可以 帮忙解释下 第四轮 怎么用dp做嘛?? 感激不尽!
回复

使用道具 举报

🔗
catinclay 2016-11-27 12:30:47 | 只看该作者
全局:
xiangjn_alex 发表于 2016-11-27 12:12
可以 帮忙解释下 第四轮 怎么用dp做嘛?? 感激不尽!

可以看一下我12樓的貼子 字數字數
回复

使用道具 举报

🔗
Frankluo 2016-11-28 15:39:35 | 只看该作者
全局:
第四题,可以把string拆成left和right两半,然后题目就转化为了shortestEditDistance(left,right)
回复

使用道具 举报

🔗
Yuzuka 2016-12-5 06:33:06 | 只看该作者
全局:
第三题kruskal 第四题翻转后求最长公共子序列
回复

使用道具 举报

🔗
类与对象tju 2016-12-13 14:28:29 | 只看该作者
全局:
楼主,我想请问下第一轮。 是不是有什么限制条件呀,比如数字都是小于10, 不然 a234, 可以理解成234个a?, 能否说明下具体的格式呢?谢谢楼主
回复

使用道具 举报

🔗
ayzmkkk 2016-12-14 13:22:34 | 只看该作者
全局:
  1. #define MAXN 5000+5
  2. short dp[MAXN][MAXN];


  3. int intervalDP(string &s) {
  4.         int n = s.length();
  5.         for(int i=n-1;i >= 0; i--) {
  6.                 for(int j=i+1;j<n;j++) {
  7.                         if(s[i] == s[j]) {
  8.                                 dp[i][j] = dp[i+1][j-1];
  9.                         }else {
  10.                                 dp[i][j] = min(dp[i+1][j],dp[i][j-1]) + 1;
  11.                         }
  12.                 }
  13.         }
  14.         return dp[0][n-1];
  15. }

  16. int lcs(string &s,string &t) {
  17.         int n = s.length();
  18.         for(int i=1;i<=n;i++) {
  19.                 for(int j=1;j<=n;j++) {
  20.                         if(s[i-1] == t[j-1]) {
  21.                                 dp[i][j] = dp[i-1][j-1] + 1;
  22.                         }else {
  23.                                 dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
  24.                         }
  25.                 }
  26.         }
  27.         return dp[n][n];
  28. }

  29. int dfs(int l,int r,string &s) {
  30.         if(l >= r) return 0;
  31.         if(dp[l][r] != -1) return dp[l][r];
  32.         if(s[l] == s[r]) {
  33.                 dp[l][r] = dfs(l+1,r-1,s);
  34.         }
  35.         else {
  36.                 dp[l][r] = min(dfs(l+1,r,s),dfs(l,r-1,s)) + 1;
  37.         }
  38.         return dp[l][r];
  39. }

  40. int main(){
  41.         string s;
  42.         while(cin>>s) {
  43.                 int n = s.length();
  44.                 // solution 1 区间dp
  45.                 memset(dp,0,sizeof(dp));
  46.                 cout<< intervalDP(s) <<endl;
  47.                

  48.                 // solution 2 lcs
  49.                 memset(dp,0,sizeof(dp));
  50.                 string t = s;
  51.                 reverse(s.begin(),s.end());
  52.                 int len = lcs(s,t);
  53.                 cout<<n-len<<endl;
  54.                

  55.                 // solution 3 memory search
  56.                 memset(dp,-1,sizeof(dp));
  57.                 cout<<dfs(0,n-1,s)<<endl;

  58.         }
  59.         return 0;
  60. }
复制代码

第四题三种方法:
1. 区间dp
2. 与翻转串求lcs, 答案:n-lcs
3. 记忆化搜索(比较好理解)
回复

使用道具 举报

🔗
 楼主| printf_ll 2016-12-15 07:36:08 | 只看该作者
全局:
类与对象tju 发表于 2016-12-13 14:28
楼主,我想请问下第一轮。 是不是有什么限制条件呀,比如数字都是小于10, 不然 a234, 可以理解成234个a?, ...

没有限制,如果原字符串是11个a,会encode为a9a2,所以a234只可能理解成2个a和4个3
回复

使用道具 举报

🔗
类与对象tju 2016-12-15 07:49:06 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
queiie 2016-12-15 08:13:55 | 只看该作者
全局:
lz是hr collect完feedback以後叫去面application engineer 嗎?還是hc叫你去面的。。。
回复

使用道具 举报

🔗
h197377 2016-12-15 11:04:28 | 只看该作者
全局:
最后一题multi thread,是最后结尾count == 200 么,就算他们data race,最后还是各加100 -> 100 + 100 = 200? 求大神解答。。。
回复

使用道具 举报

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

本版积分规则

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