日韩性视频-久久久蜜桃-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日的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 一级二级三级视频 | 日本一区二区三区精品 | 午夜国产一区二区 | 亚洲国产精品久久久久久久 | 91久久久久 | 成人免费午夜视频 | 成人av国产 | 操穴网站| 国产日产欧美一区二区三区 | 婷婷开心激情 | 午夜免费网站 | 国产91在线观看丝袜 | 日色网站 | 亚洲妇熟xx妇色黄蜜桃 | 久久久xxx| 久久精品久久国产 | 久久亚洲无码视频 | 特级精品毛片免费观看 | 亚洲在线观看视频 | 日韩精品三级 | 在线观看免费国产视频 | 激情久久免费视频 | 久久精品国产一区二区三区 | 影音先锋中文字幕在线播放 | 北条麻妃在线一区 | 国产女人高潮时对白 | 成人18视频免费69 | 国产精品视频一区二区三区不卡 | 久久久久久黄色 | 人妖被c到高潮欧美gay | 青青操网 | 一本大道综合伊人精品热热 | 黄色av免费 | 草啪啪| 国产精品第13页 | 丝袜熟女一区二区三区 | 日本欧美一区二区三区 | 欧美精品在线一区二区 | 亚洲精品a区 | 国产精品扒开腿做爽爽爽视频 | 亚洲一级网站 | 黑人巨茎大战欧美白妇 | 污污av | 国产精品免费一区二区区 | 亚洲精品无码久久久久久久 | 视频免费观看在线 | 精品一区精品二区 | 免费在线观看你懂的 | 韩国美女毛片 | 夜夜爽av | 日韩在线免费播放 | 免费欧美视频 | 狠狠草视频 | a天堂资源在线观看 | 欧美日韩一区免费 | 成人免费看片98 | 国产污污在线观看 | 国内精品一区二区 | 一区二区三区www | 日韩黄色免费网站 | 中文字幕在线三区 | 色噜噜影院| 国产精品天天av精麻传媒 | 激情综合网av | 丁香四月婷婷 | 在线观看免费中文字幕 | 欧美一级视频免费 | 免费一级做a爰片久久毛片潮 | 狠狠躁狠狠躁视频专区 | 免费91视频 | aaa毛片视频 | av黄色影院| 亚洲人妻一区二区 | 爽爽窝窝午夜精品一区二区 | 国产吞精囗交久久久 | 一区二区乱子伦在线播放 | 日韩精品在线视频免费观看 | 国产极品探花 | 91精品大片 | 91久久人澡人人添人人爽欧美 | 日日噜噜噜夜夜爽爽狠狠视频97 | 蜜臀久久99静品久久久久久 | 天天干天天舔 | 国产人伦精品一区二区三区 | 国产精品51麻豆cm传媒 | 国产三极片 | 亚洲国产va | 91成人在线观看喷潮动漫 | 黄色成人av网站 | 久久中文一区 | 无套内谢少妇露脸 | 欧美三级一区二区三区 | 寡妇高潮一级视频免费看 | 中文字幕在线播出 | 重口变态虐黄网站 | 午夜神马影院 | 香蕉久久国产av一区二区 | 公侵犯一区二区三区 | 逼逼av|