日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 2014年阿里巴巴校園招聘兩道算法題

2014年阿里巴巴校園招聘兩道算法題

來源:程序員人生   發布時間:2014-08-30 16:37:32 閱讀次數:3765次

昨天阿里巴巴校園招聘在線測試,總的來說算法題比較簡單,至于前面的選擇題不是本人的強項,個人感覺比較難。下面我們說說兩道算法題:

第一題大意是有一個quary和text要求找出兩者匹配最長的字符串的長度:例如:quary“abcdef”,text“sabcd”那么最長匹配即為abcd,所以返回4就OK。對于本題的解法個人感覺和LCS差不多,只需進行小小的改進就OK了,如果兩者的對應為相同動態方程就按照LCS來做,如果不同直接賦值0就OK了。下面給出具體解法(比較簡單)。
 

  1. 01.#include<stdio.h>    
  2. 02.#include <stdlib.h>    
  3. 03.#include <string.h>    
  4. 04.   
  5. 05.   
  6. 06.int find_max_len(const char *quary,const char *text)   
  7. 07.{   
  8. 08.    if(quary == NULL || text ==  NULL)   
  9. 09.    {   
  10. 10.        return 0;   
  11. 11.    }   
  12. 12.   
  13. 13.    int len1 = strlen(quary);   
  14. 14.    int len2 = strlen(text);   
  15. 15.    int **temp = NULL;   
  16. 16.    int i,j;   
  17. 17.    for(i = 0; i < len1 + 1; i++)   
  18. 18.    {   
  19. 19.        temp = (int **)malloc(sizeof(int **)*(len1+1));   
  20. 20.            memset(temp, 0,sizeof(int **)*(len1+1));   
  21. 21.    }   
  22. 22.   
  23. 23.    for(j = 0; j < len1 + 1; j++)   
  24. 24.    {   
  25. 25.        temp[j] = (int *)malloc(sizeof(int *)*(len2 + 1));   
  26. 26.        memset(temp[j],0, sizeof(int *)*(len2 +1));   
  27. 27.    }   
  28. 28.   
  29. 29.    for(i = 1; i < len1+1; i++)   
  30. 30.    {   
  31. 31.        for(j = 1; j < len2+ 1; j++)   
  32. 32.        {   
  33. 33.            if(quary[i-1] == text[j-1])   
  34. 34.            {   
  35. 35.                temp[i][j] = temp[i-1][j-1] + 1;   
  36. 36.            }   
  37. 37.            else   
  38. 38.            {   
  39. 39.                temp[i][j] = 0;   
  40. 40.            }   
  41. 41.        }   
  42. 42.    }   
  43. 43.    int Max = 0;   
  44. 44.    for( i = 0; i < len1+1; i++)   
  45. 45.    {   
  46. 46.        for(j = 0; j < len2+1; j++)   
  47. 47.        {   
  48. 48.            if(Max < temp[i][j])   
  49. 49.            {   
  50. 50.                Max = temp[i][j];   
  51. 51.            }   
  52. 52.            printf("%d ", temp[i][j]);   
  53. 53.        }   
  54. 54.   
  55. 55.        printf("\n");   
  56. 56.    }   
  57. 57.   
  58. 58.    return Max;   
  59. 59.}   
  60. 60.   
  61. 61.int main()   
  62. 62.{   
  63. 63.    const char*quary = "abcdefg";   
  64. 64.    const char *text = "sbcd";   
  65. 65.    printf("%d\n",find_max_len(quary, text));   
  66. 66.    return 0;   
  67. 67.}   

對與第二道題大意是:給定一個二叉樹每個節點都是數字,找出其中兩個差值最大的絕對值(如果我沒有理解錯誤就是這個意思)要求算法高效。個人該覺該題最起碼得遍歷一下該數,要求高效那么就不要遞歸遍歷,改成非遞歸即可。對于非遞歸遍歷方法比較多,分層,前序,后序等,輔助空間采用隊列或者棧等。個人感覺使用按層+queue最為簡單,在找出最大,最小值就OK了。對于具體實現我就不多寫了。
 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲视频一二三区 | 精品成人久久久 | 国产欧美久久一区二区三区 | 91精品国产综合久久久久蜜臀 | 亚洲一区二区在线免费观看 | 日韩精品一区二区在线 | 日本网站免费观看 | 欧美成视频 | 国产欧美精品一区二区三区 | 国产91精品久久久久久久网曝门 | 国产成人一区二区 | 日韩精品网站 | 三级网站视频 | 午夜精品福利一区二区三区蜜桃 | 久久久久久中文字幕 | 久久大香 | 三级成人在线 | 性农村人freesex | av2014天堂网| 不卡一区二区三区四区 | 欧美怡红院视频 | 欧美日韩精品 | 国产精品久久久一区二区 | 久久69国产一区二区蜜臀 | 综合色区| 欧美日韩第一区 | 成年人免费在线观看 | 欧美日韩国产精品久久久久 | 免费a级毛片在线观看 | av免费网站| 久久久久久久一区 | 久久久久久久免费 | 激情欧美一区 | 亚洲福利视频导航 | 精品久久久国产 | 这里只有精品视频在线观看 | 精品国产一区二区三区久久久 | 国产午夜精品久久 | 午夜日韩 | 国产97在线 | 免费 | 国产日韩中文字幕 |