半數集問題

  給定一個自然數n,由n開始可以依次產生半數集set(n)中的數如下:

  (1)???n?∈set(n);

  (2)?在n的左邊加上一個自然數,但該自然數不能超過最近添加的數的一半;

  (3)?按此規則進行處理,直到不能再添加自然數為止。

  以6為例子,6,6前面可以加1,2,3生成16,26,36,26前面可以加1生成126,同理36生成136.所以6的半數集元素個數為6分別是6,16,26,36,126,136

  以12為例子,只加一個數字產生的元素有612,512,412,312,212,112。因為之后加的數字與‘12’沒有關系,只與第一次加的數字有關,612,512,412,312,212,112產生的半數集元素的個數相當于6,5,4,3,2,1的半數集的個數,不難得到如下公式。

  

遞歸代碼:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>using namespace std;int f(int n){if(n==1)return 1;else{int ans=1;for(int i=1;i<=n/2;i++){ans=ans+f(i);}return ans;}
}int main()
{int n;scanf("%d",&n);int num=f(n);printf("%d\n",num);return 0;
}

  遞歸時間復雜度很高對此我們可以進行優化,用數組空間存儲之前的狀態

O(n2)實現:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>using namespace std;int main()
{int n;scanf("%d",&n);int a[100];a[1]=1;for(int i=2;i<=n;i++){a[i]=1;for(int j=1;j<=i/2;j++){a[i]+=a[j];}}printf("%d\n",a[n]);return 0;
}

  仔細分析后,發現時間復雜度其實可以降到O(n),因為當n為奇數時,第n項的半數集個數等于第n-1項的半數集個數,當n為偶數時,第n項的半數集個數等于第n-1項半數集個數 加 第n/2項半數集個數。

O(n)實現:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>using namespace std;int main()
{int n;scanf("%d",&n);int a[100];a[0]=a[1]=1;for(int i=2;i<=n;i++){if(i%2!=0)a[i]=a[i-1];else{a[i]=a[i-1]+a[i/2];}}printf("%d\n",a[n]);return 0;
}

  

轉載于:https://www.cnblogs.com/wz-archer/p/10603424.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394566.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微型計算機控制理論基礎答案,微型計算機控制技術試卷c

微型計算機控制技術試卷a潘新民 微型計算機控制技術實用教程微型計算機控制技術試卷C一、選擇題(本題共10小題&#xff0c;每小題 1.5分&#xff0c;共15分)1. DAC0832的VREF接-5V&#xff0c;IOUT1接運算放大器異名端&#xff0c;輸入為1000000B &#xff0c;輸出為( )。A. 5V…

aws lambda_四處奔走:初學者遇到AWS Lambda

aws lambdaby Janaka Bandara通過Janaka Bandara 四處奔走&#xff1a;初學者遇到AWS Lambda (Running around the block: a beginner meets AWS Lambda) Computing! It sure has a very long, vivid (and sometimes awkward) history. Some key milestones include:計算&…

python打開快捷方式_Python創建啟動目錄的快捷方式,python,到

# -*- coding:utf-8 -*-# author&#xff1a;lizonezhiimport osimport sysimport pythoncomimport win32com.client as clientdef createShortCut(filename): # 目前創建的無起始位置"""filename should be abspath, or there will be some strange errors&quo…

二叉樹的基本操作及應用(三)

#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> typedef char DataType; int depth0; int h11; int nlayer1; char ch2; typedef struct node {DataType data;//節點數據元素struct node *lchild;//指向左孩子struc…

maven的profile詳解

詳細內容請見&#xff1a;https://www.cnblogs.com/wxgblogs/p/6696229.html Profile能讓你為一個特殊的環境自定義一個特殊的構建&#xff1b;profile使得不同環境間構建的可移植性成為可能。Maven中的profile是一組可選的配置&#xff0c;可以用來設置或者覆蓋配置默認值。有…

夏至未至計算機版音樂,夏至未至有哪些插曲背景音樂 夏至未至所有bgm歌曲匯總...

夏至未至有哪些插曲背景音樂 夏至未至所有bgm歌曲匯總夏至未至第一集插曲是什么?夏至未至插曲曝光。夏至未至是由陳學冬、鄭爽、白敬亭等聯袂主演的青春偶像劇,昨晚已經開播了&#xff0c;那么第一集的插曲是什么呢?和小編一起去看看吧!夏至未至第一集插曲《那些花兒》那片笑…

了解如何在20分鐘內創建您的第一個Angular應用

Angular is a JavaScript framework, created my Misko Hevery and maintained by Google. It’s an MVC (Model View Vontroller). You can visit the official page to learn more about it.Angular是一個JavaScript框架&#xff0c;創建了我的Misko Hevery&#xff0c;并由G…

js閉包使用

閉包就是在一個函數內定義一個內部函數 并返回內部函數 function f1(){var a1; addfunction(){aa1;} function f1Sub(){ console.log(a); } return f1Sub; } var ff1();f();add();f();var f2f1();add();f(); 輸出為 1 2 2 可以看到輸出結果 定義f2后執行add 這時 f2的add函數已…

BIO,NIO,AIO總結(二)

這里重點介紹NIO 待定 http://www.apigo.cn/2018/11/09/javacore5/ https://juejin.im/entry/598da7d16fb9a03c42431ed3 https://mp.weixin.qq.com/s/c9tkrokcDQR375kiwCeV9w?轉載于:https://www.cnblogs.com/smallJunJun/p/10607078.html

思科配置計算機ip地址子網掩碼,計算機系統與網絡技術IP地址 子網掩碼 主機號等計算復習...

IP地址 子網掩碼 主機號等計算復習IP地址、子網掩碼、網絡號、主機號、網絡地址、主機地址復習 IP地址&#xff1a;4段十進制&#xff0c;共32位二進制&#xff0c;如&#xff1a;192.168.1.1 二進制就是&#xff1a;11000000&#xff5c;10101000&#xff5c;00000001&#xf…

nmap常用參數詳解

nmap常用參數詳解 作者&#xff1a;尹正杰 版權聲明&#xff1a;原創作品&#xff0c;謝絕轉載&#xff01;否則將追究法律責任。 借用英雄聯盟的一個英雄趙信的一句話&#xff1a;“即使敵眾我寡,末將亦能萬軍叢中取敵將首級!”。三國關羽&#xff0c;萬軍叢中斬了顏良&#x…

r語言r-shiny_使用Shiny和R構建您的第一個Web應用程序儀表板

r語言r-shinyby AMR通過AMR 使用Shiny和R構建您的第一個Web應用程序儀表板 (Build your first web app dashboard using Shiny and R) One of the beautiful gifts that R has (that Python missed,until dash) is Shiny. Shiny is an R package that makes it easy to build …

RHEL5.8配置開機自動掛載磁盤

Linux環境中可以通過fstab來設置自動掛載磁盤或者共享存儲&#xff0c;操作如下&#xff1a; fstab配置文件路徑&#xff1a;/etc/fstab 每行代表一個存儲位置。 [rootappsrv01 ~]# cat /etc/fstab LABEL/ / ext3 defaults 1…

909計算機基礎大綱,《計算機應用基礎》(專科)考試大綱

《計算機應用基礎》(專科)考試大綱《計算機應用基礎》考試大綱考試對象&#xff1a;《計算機應用基礎》考試大綱適用于網絡教育所有專業的高中起點專科學生。 考試教材&#xff1a;《全國計算機等級考試一級MS Office教程》(2004版)&#xff0c;南開大學出版社 課程學時&#x…

模板變量,過濾器和靜態文件引用

模板變量&#xff0c;過濾器和靜態文件引用 模板路徑 Djiango先到settings里面找templates下的DIRS查看是否有路徑&#xff0c;也是從上往下依次尋找&#xff0c;找到就返回。如果DIRS沒有&#xff0c;就到APP_DIRS里面尋找。但是APP要先在INSTALLED_APPS里面進行注冊然后根據I…

antd option寬度自適應_WordPress文章中添加自適應寬度的表格——墨澀網

WordPress文章中添加自適應表格&#xff0c;前面寫文章的時候需要用到表格來表達陣列信息&#xff0c;但是在WordPress添加表格不想是在office中那樣方便&#xff0c;需要借助插件或者代碼才可以實現&#xff0c;今天分享一個不需要安裝插件純代碼實現WordPress文章中添加自適應…

Go語言程序記錄日志

許多軟件系統運行中需要日志文件。Go語言程序中&#xff0c;輸出日志需要使用包"log"&#xff0c;編寫程序十分簡單。 像Java語言程序&#xff0c;輸出日志時&#xff0c;往往需要使用開源的軟件包來實現&#xff0c;編寫程序稍微復雜一些。 Go語言的包"log&quo…

如何讓代碼更易于維護_如何輕松地使您的網站更易于訪問

如何讓代碼更易于維護by Jaroslav Vaňkt通過JaroslavVaňkt 如何輕松地使您的網站更易于訪問 (How you can easily make your website more accessible) As a designer, developer, or even product manager, you have thousands of responsibilities. Every project require…

計算機安全概論論文,計算機安全探討論文畢業論文(7篇).doc

計算機安全探討論文畢業論文(7篇)計算機安全探討論文畢業論文(7篇)計算機安全探討論文畢業論文(7篇)預讀: 第一篇:終端計算機安全檢查技術研究【摘要】信息安全保密管理工作的重點和計算機終端檢查的難點,促進了計算機安全檢查技術的發展.本文回顧了終端檢查技術經歷的三個階段…

OO第一單元總結

OO第一單元總結 第一次作業總結 這是我第一次接觸Java和面向對象思想&#xff0c;最一開始&#xff0c;我建立了簡單的類和對象的概念&#xff0c;多虧了第一次作業難度和復雜度較低&#xff0c;我才沒有崩掉hhh。 第一次作業我只分了三個類&#xff0c;一個main&#xff0c;一…