日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

找出没有相邻的1的二进制数的个数---2013年2月17日

發布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 找出没有相邻的1的二进制数的个数---2013年2月17日 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?? 問題描述:用G(n)表示在有n位的二進制數中沒有相鄰的兩個1的二進制數個數。比如,當n=3時,000,001,010,011,100,101,110,111這8個數中只有000,001,010,100,101這5個是沒有相鄰為1的,故G(3)=5。請寫一個程序,輸出G(n)的值。 ? ? ??錯誤的思路(考慮的不周全):采用"分治"的方法,比如n=3,每次都將處理原問題規模的二分之一,直到n=1時,就很容易可以知道有兩種情況。前面是"分",然后是"合"。比如把規模為n的問題分成了p1和p2部分,而且p1和p2問題都已經解決,個數已經知道。那么,把p1和p2合起來的時候就只需要注意p1的最右邊和p2的最左邊的數不能同時為1,即:合起來的總的個數是:1*(p2-1)+(p1-1)*p2。"遞歸"和"分治"不分家,所以很容易寫出下面的程序。 ? ? ? 以下是錯誤的代碼。 錯誤的代碼 1 int calculate(int n) 2 { 3 if(n==1) 4 return 2; 5 if(p[n]!=0) 6 return p[n]; 7 int div=n/2; 8 return (p[n]=calculate(n-div)-1 + (calculate(div)-1)*calculate(n-div)); 9 } ? ? ? ?正確的思路:算法的核心思想不變,依然是"分治"。"分"的部分很好處理,"合"的時候就容易出錯了。我之前就是在合并的時候沒有考慮周全。依然是把規模為n的問題分成p1和p2部分,令div=n/2,那么p1中有div個元素,p2中有n-div個元素。合并的時候,已經保證p1,p2部分分別都沒有相鄰的兩個1了,這時需要注意的就只是p1的最右邊一個數和p2的最左邊的一個數了。分兩種情況(要用到排列組合的基礎知識): ? ? ? ?將p1中最右邊的數記為A,p2中最左邊的數記為B,方便下面的文字描述。 ? ? ? ?1.A不為1。這種情況比下一種情況簡單一些。在p1中,A不為1,那么A就是0了。這種情況下,G(div)=G(div-1)。再來考慮p2。既然A為0,那么B即使為1也沒關系了。所以,這種情況下的結果就是G(div-1)*G(n-div)。 ? ? ? ?2.A為1。因為A為1,那么A左邊的第一個數必然為0(因為p1中沒有兩個相鄰的1),所以在這種情況下G(div)=G(div-2)。再來考慮p2。既然A為1,那么B肯定得為0了,那么B右邊的數也就沒有限制了,即G(n-div-1)。所以,這種情況下的結果就是G(div-2)*G(n-div-1)。 ? ? ? ?代碼如下: 1 #include <stdio.h> 2 #define MAX 1000 3 4 int p[MAX]={0}; 5 6 //prototype 7 int calculate(int n); 8 9 int main() 10 { 11 int n=6; 12 int result=calculate(n); 13 printf("%d\n",result); 14 return 0; 15 } 16 17 int calculate(int n) 18 { 19 if(n<1) 20 return 1; 21 if(n==1) 22 return 2; 23 if(p[n]!=0) 24 return p[n]; 25 int div=n/2; 26 return (p[n]=(calculate(div-2) * (calculate(n-div-1)) + calculate(div-1)*calculate(n-div))); 27 } ? ? ? ?通過程序,可以得到G(1)=2,G(2)=3,G(3)=5,G(4)=8,G(5)=13,G(6)=21......可以看出這是一個斐波拉契數列。 本文轉自NeilHappy 51CTO博客,原文鏈接:http://blog.51cto.com/neilhappy/1134394,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的找出没有相邻的1的二进制数的个数---2013年2月17日的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 台湾佬在线 | 久久理论片 | 日日噜噜噜夜夜爽爽狠狠 | 黑人黄色一级片 | 人妻无码一区二区三区四区 | 精品中文字幕在线观看 | 少妇无码av无码专区在线观看 | 美女少妇直播 | 在线观看你懂得 | 国产成人自拍视频在线观看 | 五月婷婷激情 | 中文字幕av有码 | xxxxx毛片| 三级电影网址 | 韩国无码一区二区三区精品 | 久久免费av | 国产一区视频在线免费观看 | 综合一区二区三区 | 久久久久网 | 蜜桃臀aⅴ精品一区二区三区 | www.com亚洲| 美女扒开粉嫩的尿囗给男生桶 | 午夜激情视频在线观看 | 九九爱视频 | 橹图极品美女无圣光 | 国产成人99久久亚洲综合精品 | 亚洲精品少妇一区二区 | 男人天堂手机在线 | 狠狠操导航 | 欧美色综合色 | 在线99视频 | 亚洲天堂美女视频 | 久久福利小视频 | 亚洲精品小视频 | 久久国产美女视频 | 国产美女在线免费观看 | 亚洲v欧美v另类v综合v日韩v | 善良的老师伦理bd中字 | 影音先锋中文字幕第一页 | av电影在线观看网址 | 久久高清无码视频 | 秋霞午夜网 | 国产一级免费视频 | 亚欧日韩av | 欧美日韩亚洲成人 | 久久精品视频网站 | 狠狠干导航 | 美女福利视频在线观看 | 亚洲图片二区 | 亚洲av无码久久忘忧草 | 好吊在线视频 | 99这里只有精品 | 美丽的姑娘观看在线播放 | 人人草av | 校霸被c到爽夹震蛋上课高潮 | 在线播放黄色av | 国产精品久久久久毛片软件 | 午夜影院在线观看视频 | 性生交大全免费看 | 久久久亚洲天堂 | 五十路中出 | www黄色av| 91夫妻论坛 | 亚洲一区二区三区无码久久 | 一级黄色在线观看 | 99热这里只有精品99 | 激情一区 | 91免费版视频 | 草草影院地址 | 性日韩| 国产精品igao视频 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 18禁免费无码无遮挡不卡网站 | 精品黄色片| 免费在线观看成人av | 国产在线观看一区二区三区 | 日韩天堂一区 | av免费高清 | 亚洲一区二区久久 | 黑人性视频 | 美攻壮受大胸奶汁(高h) | 特级毛片在线 | 日日噜噜夜夜爽爽 | 亚洲视频综合 | 国产丝袜网站 | 成人免费av片 | 久久日韩 | 不卡av一区二区 | 日韩极品视频在线观看 | 在线亚洲色图 | 99九九视频| 精品国产乱码久久久久久浪潮 | 人人妻一区二区三区 | kk视频在线观看 | 色视频在线观看免费 | 亚洲三级精品 | 曰本不卡视频 | 超碰资源在线 | 国产色91 |