青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

雁過無痕

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::

    Trilogy公司的筆試題:

如果n為偶數(shù),則將它除以2,如果n為奇數(shù),則將它加1或者減1。問對(duì)于一個(gè)給定的n,怎樣才能用最少的步驟將它變到1
    例如:n=11: ① ++n -> 12 ② n/2 -> 6 ③ n/2 -> 3   ④ --n -> 2  ⑤ n/2 -> 1  共需5步。

 
 

最簡(jiǎn)單的方法就是用DP。設(shè)f(n)為所用的最少步驟。根據(jù)定義可得:

n為偶數(shù), f(n)=f(n/2) + 1;

n為奇數(shù), f(n)= min(f(n-1), f(n+1)) +1

                       = min(f((n-1)/2), f((n+1)/2)) +2

或者:

 f(2*k)=f(k)+1 

f(2*k+1)=min(f(k),f(k+1))+2

 

利用上述遞推公式,可以直接從數(shù)字1開始算到n,用一個(gè)數(shù)組保存前 n/2+1個(gè)數(shù)所用的最少步驟,但這時(shí)間和空間復(fù)雜度均為O(n),其實(shí)利用上面的遞推公式,可以實(shí)現(xiàn)時(shí)間復(fù)雜度為0(lg n)。觀察上面的遞推公式,可以發(fā)現(xiàn),要計(jì)算n,只要計(jì)算n/2n/2+1,如要計(jì)算59,只要計(jì)算:

59 -> 29,30 -> 14,15 -> 7,8 -> 3,4 -> 1,2

 

代碼如下:

int num2one_dp(unsigned n)
{
  unsigned tmp
=n, flag=1, ret=0, next=1;
  
while (tmp>>=1) flag<<=1;
  
while (flag>>=1{
    
if (n & flag) {
      
if (ret > next) ret = next;
      ret 
+= 2;
      
++next;
    }
 else {
      
if (next > ret) next = ret;
      next 
+= 2;
      
++ret;
    }

  }

  
return ret;
}


上面的O(lg n)解法,對(duì)n先處理高位的01,下面的O(lg n)解法則恰恰相反,先處理n的低位的01

nn>1)轉(zhuǎn)為二進(jìn)制數(shù)表示

(下面的“加1”、“減1”操作均特指對(duì)奇數(shù)采取的操作,操作次數(shù)包括對(duì)偶數(shù)的操作次數(shù)。)

⑴ 如果n僅由m個(gè)連續(xù)的1組成(即n=2^m-1 m>=2),

① “加1”操作:  需要 m+1 次操作

② “減1”操作:  需要 2*(m-1) 次操作

       顯然,僅當(dāng)m=2(即n=3)時(shí),“減1”所用的操作次數(shù)才比1”少。

⑵ 如果n可以表示為:x10m1k m>=1, k>=1

x可以為空串或任意01序列,0m表示連續(xù)m個(gè)01k表示連續(xù)k個(gè)1)

   ① “加1”操作:  k+1 次操作后得到x10m-11如果,接著用“減1”操作(注意,這不這一定最優(yōu)解法),總共k+3次操作可得x10m-1

   ②“減1”操作:  2*k+1次操作后得到x10m-1

   顯然,僅當(dāng)k=1時(shí),“減1”所用的操作次數(shù)才可能比1”少。

   可以證明,對(duì)x10m1,“減1”所用的操作次數(shù)一定不會(huì)比“加1”的多。

   (當(dāng)k=1時(shí),對(duì)x10m1,假設(shè)先進(jìn)行一次“加1”操作最終所用的步驟數(shù)較少。“加1”操作后,在將x10m1轉(zhuǎn)為x11前,若用到“減1”操作,則可以直接對(duì)x10m1進(jìn)行 “減1”操作,所有步驟更少,因而后面都是采用“加1”操作。

     對(duì)x10m1(可表示為y01t0m1y允許是空串),

 “加1”操作   2*m+t+2 次后得到  y1

“減1”操作       m+2 次后得到  y01t

(再用“加1操作”,m+t+3后也可得到y1

由于對(duì)m>=1,恒有m+t+3 <= 2*m+t+2,因而對(duì)x10m1

“減1”操作能保證得到最優(yōu)解。)

⑶ 總之,僅當(dāng)n=3n二進(jìn)制表示的最低2位是01時(shí),才用“減1”操作


代碼:

int num2one(unsigned n)
{
  
if (n==0return -1;
  
int count=0;
  
while (1{
    
while ((n&1)==0{ n >>= 1u++count; }
    
if (n<=3{
      
// n只能為1或3,n為3時(shí),還要進(jìn)行兩步操作
      count += n - 1;
      
break;
    }

    
if ((n&3)==1)  --n;
    
else ++n;
    
++count;
  }

  
return count;
}


 

posted on 2010-06-21 12:46 flyinghearts 閱讀(2221) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 算法

評(píng)論

# re: Trilogy公司的筆試題:用最少的步驟將數(shù)轉(zhuǎn)為1 2010-06-21 17:45 刀刀
題目看不明白  回復(fù)  更多評(píng)論
  

# re: Trilogy公司的筆試題:用最少的步驟將數(shù)轉(zhuǎn)為1 2010-06-21 18:31 唐風(fēng)
確實(shí)題目不清楚。呵呵
  回復(fù)  更多評(píng)論
  

# re: Trilogy公司的筆試題:用最少的步驟將數(shù)轉(zhuǎn)為1 2010-06-21 19:40 小時(shí)候可靚了
n &= 0x1;
或者
n = 1;  回復(fù)  更多評(píng)論
  

# re: Trilogy公司的筆試題:根據(jù)指定規(guī)則用最少的步驟將數(shù)轉(zhuǎn)為1 2010-06-22 00:07 flyinghearts
題目已經(jīng)改過來了。
  回復(fù)  更多評(píng)論
  

# re: Trilogy公司的筆試題:根據(jù)指定規(guī)則用最少的步驟將數(shù)轉(zhuǎn)為1 2010-06-22 09:05 凡客誠品官方網(wǎng)站
Trilogy公司的筆試題  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产福利国产秒拍| 久久久亚洲国产美女国产盗摄| 亚洲精品欧美在线| 国内精品美女av在线播放| 欧美日韩另类在线| 欧美精品一区二区在线观看 | 欧美色大人视频| 欧美高清成人| 欧美日产在线观看| 欧美99在线视频观看| 欧美成黄导航| 欧美亚男人的天堂| 国产日韩在线亚洲字幕中文| 国产精品视频免费在线观看| 国产精品美女黄网| 国产丝袜一区二区三区| 国产在线精品一区二区夜色| 日韩一区二区精品葵司在线| 亚洲美女黄色| 亚洲一区免费网站| 久久视频国产精品免费视频在线| 快she精品国产999| 国产精品白丝av嫩草影院| 精品999网站| 亚洲手机视频| 农夫在线精品视频免费观看| 亚洲国产综合在线| 香港久久久电影| 欧美日韩国产综合视频在线| 国产麻豆精品theporn| 亚洲久久一区| 免播放器亚洲| 亚洲欧美视频在线观看视频| 免播放器亚洲| 亚洲成色999久久网站| 午夜精品久久99蜜桃的功能介绍| 欧美aⅴ99久久黑人专区| 性欧美大战久久久久久久久| 欧美三级黄美女| 亚洲一二三区在线观看| 黄色av成人| 久久久久久伊人| 亚洲主播在线观看| 国产精品久久久久久久久久直播| 一本不卡影院| 亚洲视频免费在线| 国产欧美丝祙| 久久久www| 欧美sm重口味系列视频在线观看| 亚洲精品日韩在线观看| 亚洲国产一区二区三区在线播| 亚洲四色影视在线观看| 亚洲大胆视频| 欧美刺激午夜性久久久久久久| 亚洲第一毛片| 亚洲欧洲在线免费| 国产精品一区二区你懂的| 午夜老司机精品| 久久精品国产成人| 日韩视频亚洲视频| 亚洲精品三级| 好吊色欧美一区二区三区四区| 久久亚洲午夜电影| 国产精品www| 亚洲盗摄视频| 国产午夜精品一区二区三区欧美| 亚洲福利av| 亚洲高清在线观看一区| 一本大道av伊人久久综合| 国产一区二区福利| 国产精品99久久99久久久二8 | 国产欧美精品| 亚洲人成在线观看网站高清| 国产伦精品免费视频| 欧美成人日本| 亚洲国内欧美| 欧美a级一区| 亚洲国产日韩欧美在线动漫| 国产日韩精品一区二区三区| 亚洲精品中文字幕女同| 亚洲精品五月天| 欧美精品国产精品日韩精品| 久久久综合网站| 亚洲高清不卡av| 亚洲一区二区三区在线观看视频 | 国产精品免费在线| 在线一区欧美| 久久国产精品久久久久久久久久| 欧美视频一区在线| 亚洲素人一区二区| 久久狠狠一本精品综合网| 国产亚洲精品久久久久婷婷瑜伽| 亚洲欧美日本国产有色| 久久久www成人免费精品| 精品999成人| 欧美日韩精品欧美日韩精品| 99成人在线| 久久久噜噜噜久久| 亚洲精品一区二区三| 国产精品日韩欧美一区| 久久乐国产精品| 9人人澡人人爽人人精品| 欧美一区二区三区另类| 亚洲国产精品成人一区二区 | 国产欧美在线看| 久久资源在线| 亚洲欧美中文另类| 亚洲精品久久久久久久久久久久久| 国产精品99久久久久久人| 国内精品99| 国产午夜一区二区三区| 欧美久久久久中文字幕| 久久久亚洲午夜电影| 国产毛片精品国产一区二区三区| 亚洲免费视频在线观看| 亚洲欧洲在线一区| 亚洲国产日韩欧美在线动漫| 国产精品区一区二区三区| 欧美精品福利在线| 美女黄毛**国产精品啪啪| 久久国产主播| 久久久另类综合| 欧美国产欧美亚州国产日韩mv天天看完整| 午夜激情综合网| 久久精品视频一| 欧美本精品男人aⅴ天堂| 嫩草国产精品入口| 亚洲第一福利视频| 日韩午夜电影在线观看| 亚洲一区二区视频| 欧美在线不卡| 欧美91福利在线观看| 欧美午夜精品理论片a级按摩| 国产精品国产三级国产普通话三级 | 欧美在线视频a| 久久一区二区三区av| 欧美二区在线| 99国产精品视频免费观看一公开| 亚洲一区二区黄| 久久三级福利| 国产精品视频专区| 最新国产精品拍自在线播放| 亚洲午夜视频在线观看| 老鸭窝毛片一区二区三区| 夜夜狂射影院欧美极品| 鲁大师影院一区二区三区| 国产精品视频区| 亚洲自拍高清| 亚洲精品久久久久久久久久久久久 | 中日韩男男gay无套| 国产无一区二区| 久久久久久国产精品一区| 久久精品视频导航| 欧美日韩视频专区在线播放 | 久久精品免视看| 欧美午夜不卡| 精品va天堂亚洲国产| 亚洲视频大全| 亚洲美女尤物影院| 欧美激情一区二区三区全黄| 国产精品美女久久久久久久 | 性欧美大战久久久久久久久| 久久精品99| 亚洲欧美日韩在线一区| 欧美日本精品一区二区三区| 一区在线电影| 亚洲激情婷婷| 亚洲欧美大片| 国产酒店精品激情| 久久不见久久见免费视频1| 日韩视频在线播放| 欧美三级网址| 亚洲国产视频一区二区| 欧美在线视频不卡| 有码中文亚洲精品| 99视频超级精品| 亚洲国产小视频在线观看| 午夜欧美精品| 亚洲综合二区| 久久先锋资源| 亚洲综合日韩| 欧美另类videos死尸| 久久久噜噜噜久久狠狠50岁| 欧美日韩成人一区| 免费成人黄色av| 欧美高清影院| 亚洲福利视频一区| 亚洲欧美一区二区精品久久久| 在线精品视频一区二区| 香蕉成人久久| 老司机久久99久久精品播放免费| 国产精品日韩欧美一区| 99国产精品自拍| 亚洲国产99| 另类专区欧美制服同性| 久久久久久午夜| 狠狠色丁香婷婷综合影院| 久久午夜国产精品| 欧美二区在线播放| 99www免费人成精品|