亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4789 | 回復(fù): 19
打印 上一主題 下一主題

一個算法題目 [復(fù)制鏈接]

論壇徽章:
1
午馬
日期:2013-08-23 23:39:47
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-03-20 22:22 |只看該作者 |倒序瀏覽
輸入 a1, a2, ... , an, b1, b2, ... , bn, 如何在O(n)的時間,用O(1)的空間,將這個序列順序改為 a1, b1, ...., an, bn.

據(jù)說是google的筆試題目,大家看看

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
2 [報告]
發(fā)表于 2010-03-20 23:05 |只看該作者
本帖最后由 cjaizss 于 2010-03-20 23:26 編輯

我的猜想錯了

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
3 [報告]
發(fā)表于 2010-03-20 23:45 |只看該作者
雖然任何兩個排列都可以經(jīng)過小于n次對換得到,
但此題限制O(1)空間復(fù)雜度,于是沒有標(biāo)志可以記錄是否經(jīng)歷過對換.
有答案嗎?

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
4 [報告]
發(fā)表于 2010-03-20 23:49 |只看該作者
以下是生成循環(huán)的shell程序

  1. #!/bin/bash
  2. echo $1|awk '{x=$1;n=0;}
  3. {
  4.         for(i=1;i<=x*2;i+=1)
  5.                 b[i]=1;
  6.         for(i=1;i<=2*x;i++)
  7.                 if(b[i] == 0)
  8.                         continue;
  9.                 else {
  10.                         b[i]=0;
  11.                         y=i;
  12.                         s=i;
  13.                         j=i;
  14.                         while(1) {
  15.                                 if(j>x)
  16.                                         j=2*(j-x);
  17.                                 else
  18.                                         j=j*2-1;
  19.                                 if(j==y)
  20.                                         break;
  21.                                 s=s","j;
  22.                                 b[j]=0;
  23.                         }
  24.                         S[n++]="("s")";
  25.                 }
  26.         for(i=0;i<n;i++)
  27.                 print S[i];
  28. }'
復(fù)制代碼
比如當(dāng)n=256時,
該置換是以下循環(huán)的乘積,很復(fù)雜

  1. (1)
  2. (2,3,5,9,17,33,65,129,257)
  3. (4,7,13,25,49,97,193,385,258)
  4. (6,11,21,41,81,161,321,130,259)
  5. (8,15,29,57,113,225,449,386,260)
  6. (10,19,37,73,145,289,66,131,261)
  7. (12,23,45,89,177,353,194,387,262)
  8. (14,27,53,105,209,417,322,132,263)
  9. (16,31,61,121,241,481,450,388,264)
  10. (18,35,69,137,273,34,67,133,265)
  11. (20,39,77,153,305,98,195,389,266)
  12. (22,43,85,169,337,162,323,134,267)
  13. (24,47,93,185,369,226,451,390,268)
  14. (26,51,101,201,401,290,68,135,269)
  15. (28,55,109,217,433,354,196,391,270)
  16. (30,59,117,233,465,418,324,136,271)
  17. (32,63,125,249,497,482,452,392,272)
  18. (36,71,141,281,50,99,197,393,274)
  19. (38,75,149,297,82,163,325,138,275)
  20. (40,79,157,313,114,227,453,394,276)
  21. (42,83,165,329,146,291,70,139,277)
  22. (44,87,173,345,178,355,198,395,278)
  23. (46,91,181,361,210,419,326,140,279)
  24. (48,95,189,377,242,483,454,396,280)
  25. (52,103,205,409,306,100,199,397,282)
  26. (54,107,213,425,338,164,327,142,283)
  27. (56,111,221,441,370,228,455,398,284)
  28. (58,115,229,457,402,292,72,143,285)
  29. (60,119,237,473,434,356,200,399,286)
  30. (62,123,245,489,466,420,328,144,287)
  31. (64,127,253,505,498,484,456,400,288)
  32. (74,147,293)
  33. (76,151,301,90,179,357,202,403,294)
  34. (78,155,309,106,211,421,330,148,295)
  35. (80,159,317,122,243,485,458,404,296)
  36. (84,167,333,154,307,102,203,405,298)
  37. (86,171,341,170,339,166,331,150,299)
  38. (88,175,349,186,371,230,459,406,300)
  39. (92,183,365,218,435,358,204,407,302)
  40. (94,187,373,234,467,422,332,152,303)
  41. (96,191,381,250,499,486,460,408,304)
  42. (104,207,413,314,116,231,461,410,308)
  43. (108,215,429,346,180,359,206,411,310)
  44. (110,219,437,362,212,423,334,156,311)
  45. (112,223,445,378,244,487,462,412,312)
  46. (118,235,469,426,340,168,335,158,315)
  47. (120,239,477,442,372,232,463,414,316)
  48. (124,247,493,474,436,360,208,415,318)
  49. (126,251,501,490,468,424,336,160,319)
  50. (128,255,509,506,500,488,464,416,320)
  51. (172,343,174,347,182,363,214,427,342)
  52. (176,351,190,379,246,491,470,428,344)
  53. (184,367,222,443,374,236,471,430,348)
  54. (188,375,238,475,438,364,216,431,350)
  55. (192,383,254,507,502,492,472,432,352)
  56. (220,439,366)
  57. (224,447,382,252,503,494,476,440,368)
  58. (240,479,446,380,248,495,478,444,376)
  59. (256,511,510,508,504,496,480,448,384)
  60. (512)
復(fù)制代碼

論壇徽章:
1
午馬
日期:2013-08-23 23:39:47
5 [報告]
發(fā)表于 2010-03-20 23:49 |只看該作者
回復(fù) 3# cjaizss


    據(jù)說有答案,這題目貌似需要很多技巧

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
6 [報告]
發(fā)表于 2010-03-21 00:57 |只看該作者
那么,只能想個辦法吧這個置換用幾個相交的循環(huán)乘積表示

論壇徽章:
0
7 [報告]
發(fā)表于 2010-03-21 01:03 |只看該作者
google "完美洗牌 算法"

論壇徽章:
0
8 [報告]
發(fā)表于 2010-03-21 03:50 |只看該作者
本帖最后由 xyfree 于 2010-03-21 04:20 編輯

弱弱地說一句....
只要n是已知的,不是用異或就可以搞定的么?

設(shè)這個數(shù)組或者鏈表為s, s[1] 即 a[1],s[2]即a[2]。。。s[n+1]即b[1]。。。s[2n] 即b[n]

從a[1]開始,依次與a[i+1]進行異或,直到 i==n-1,存儲運算結(jié)果為A
從b[1]開始,直到b[n]做同樣的事情,運算結(jié)果為B

然后開始循環(huán)直接改寫數(shù)組或鏈表元素的值,

循環(huán)內(nèi)部

  1. t = s[2n];
  2. s[2n] = B ^ s[2n];
  3. B^=t;
  4. t = s[2n-1];
  5. s[2n-1] = A ^ s[2n-1]
  6. A^=t;
復(fù)制代碼
只需要3個額外空間:t, A, B。
就足夠完成全部交換,這樣算是O(1)空間吧?
時間貌似是 O(2n),還好....


但愿是我理解錯題目了....

論壇徽章:
0
9 [報告]
發(fā)表于 2010-03-21 09:08 |只看該作者
a1, a2, ... , an, b1, b2, ... , bn,
a2 與 b1 互換

形成
a1 b1 a3 ... an  ; a2,b2,.b3,....bn
把前面的仍然看作 a, 后面的看作 b;
執(zhí)行  a3  與 b1互換

得到
a1 b2 a2,a4,....an; a3,b2,......bn;


下一次,從 a4開始, 繼續(xù)進行。
不知道下標(biāo) i 是不是存儲? 如果不是的話,好像可以不用額外存粗空間。好像很簡單很自然的做法,是我沒看明白題意?

論壇徽章:
1
午馬
日期:2013-08-23 23:39:47
10 [報告]
發(fā)表于 2010-03-21 10:20 |只看該作者
弱弱地說一句....
只要n是已知的,不是用異或就可以搞定的么?

設(shè)這個數(shù)組或者鏈表為s, s[1] 即 a[1], ...
xyfree 發(fā)表于 2010-03-21 03:50



    空間需要O(1)
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP