P1028 [NOIP2001 普及組] 數的計算

時刻記住一句話:寫遞歸,1畫圖,2大腦放空!!!

意思是,自己寫遞歸題目,先用樣例給的數據畫圖,然后想一個超級簡單的思路,直接套上去就可以了。

上題干:

題目描述

給出正整數?n,要求按如下方式構造數列:

  1. 只有一個數字?n?的數列是一個合法的數列。
  2. 在一個合法的數列的末尾加入一個正整數,但是這個正整數不能超過該數列最后一項的一半,可以得到一個新的合法數列。

請你求出,一共有多少個合法的數列。

輸入格式

輸入只有一行一個整數,表示?n。

輸出格式

輸出一行一個整數,表示合法的數列個數。

輸入輸出樣例

輸入 #1復制

6

輸出 #1復制

6

說明/提示

樣例 1 解釋

滿足條件的數列為:

  • 6
  • 6,1
  • 6,2
  • 6,3
  • 6,2,1
  • 6,3,1

數據規模與約定

對于全部的測試點,保證 1≤n≤10^3。

說明

本題數據來源是 NOIP 2001 普及組第一題,但是原題的題面描述和數據不符,故對題面進行了修改,使之符合數據。原題面如下,謹供參考:

我們要求找出具有下列性質數的個數(包含輸入的正整數?n)。

先輸入一個正整數?n(n≤1000),然后對此正整數按照如下方法進行處理:

  1. 不作任何處理;
  2. 在它的左邊拼接一個正整數,但該正整數不能超過原數,或者是上一個被拼接的數的一半;
  3. 加上數后,繼續按此規則進行處理,直到不能再加正整數為止。

?這道題,不要想那么復雜。

題目給的數字是6,并且幫我們分析了答案如何來的:

  • 6
  • 6,1
  • 6,2
  • 6,3
  • 6,2,1
  • 6,3,1

第一步:畫圖

我們可以畫出一個簡易的樹狀圖:

?

第二步:大腦放空,想一個最簡單的思路?

從i=0開始枚舉,一直枚舉到 6/2,

用 f【i】表示,6后面直接跟的數字是 i 的種數。(如果i=0,就代表,沒有跟任何數字)

所以答案就是 f【0】+ f【1】 +f【2】+f【3】

結束

寫出代碼:

const int N = 1e3 + 7;
int lxnb(int x) {int ans = 0;if (x == 1 or x == 0)return 1;for (int i = 0; i <= x / 2; i++) {ans += lxnb(i);}return ans;
}int main() {int n;cin >> n;cout << lxnb(n);
}

然后,這樣的普通遞歸,無法,完成本題。

所以我們可以用到記憶化的方法,用一個數組記錄f【i】的值,如果f【i】已經被記錄了 ,那么我們就直接返回,它的值。

無腦塞進去就行了,哪里需要管這么多。。。。

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cctype>
#include<map>
#include<set>
#include<queue>
#include<numeric>
using namespace std;
const int N = 1e3 + 7;
int flag[N];
int lxnb(int x) {int ans = 0;if (flag[x])return flag[x];if (x == 1 or x == 0)return 1;for (int i = 0; i <= x / 2; i++) {ans += lxnb(i);}return flag[x]=ans;
}int main() {int n;cin >> n;cout << lxnb(n);
}

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

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

相關文章

牛客 HJ106 字符逆序 golang實現

牛客題目算法連接 題目 golang 實現 package mainimport ("fmt""bufio""os" )func main() {str, _ : bufio.NewReader(os.Stdin).ReadString(\n)if len(str) 0 {return } else {newstr:""strLen:len(str)-1for i:strLen;i>0;i-…

生產環境出現問題,測試人如何做工作復盤?

很多時候我們能把大部分的Bug或一些部署等問題在業務上線之前就解決了&#xff0c;但由于某些因素&#xff0c;線上問題還是時而出現&#xff0c;影響業務生產甚至是公司效益。 避免線上問題的發生以及線上問題及時處理是測試人員的一項重要職責&#xff0c;如何快速地處理&am…

XG916Ⅱ輪式裝載機后驅動橋設計機械設計CAD

wx供重浩&#xff1a;創享日記 對話框發送&#xff1a;裝載機 獲取完整論文報告工程源文件 本次設計內容為XG916Ⅱ裝載機后驅動橋設計&#xff0c;大致上分為主傳動的設計&#xff0c;差速器的設計&#xff0c;半軸的設計&#xff0c;最終傳動的設計四大部分。其中主傳動錐齒輪…

【多線程】Thread類的使用

目錄 1.概述 2.Thread的常見構造方法 3.Thread的幾個常見屬性 4.啟動一個線程-start() 5.中斷一個線程 5.1通過共享的標記來進行溝通 5.2 調用 interrupt() 方法來通知 6.等待一個進程 7.獲取當前線程引用 8.線程的狀態 8.1所有狀態 8.2線程狀態和轉移的意義 1.概述 …

Relabel與Metic Relabel

Prometheus支持多種方式的自動發現目標&#xff08;targets&#xff09;&#xff0c;以下是一些常見的自動發現方式&#xff1a; 靜態配置&#xff1a;您可以在Prometheus配置文件中直接列出要監測的目標。這種方式適用于目標相對穩定的情況下&#xff0c;例如固定的服務器或設…

HCIA-RS基礎:動態路由協議基礎

摘要&#xff1a;本文介紹動態路由協議的基本概念&#xff0c;為后續動態路由協議原理課程提供基礎和引入。主要講解常見的動態路由協議、動態路由協議的分類&#xff0c;以及路由協議的功能和自治系統的概念。文章旨在優化標題吸引力&#xff0c;并通過詳細的內容夯實讀者對動…

自求導的方法實現線性回歸算法

線性回歸是一種常用的回歸算法&#xff0c;用于建立輸入變量和連續輸出變量之間的關系。傳統的線性回歸算法通常依賴于繁瑣的數學推導和梯度計算。但是&#xff0c;隨著深度學習的興起&#xff0c;自求導的方法逐漸成為實現線性回歸算法的有效途徑。本文將介紹如何使用自求導的…

視頻網站適合租用服務器嗎?

視頻網站適合租用服務器嗎&#xff1f; 談到服務器租用&#xff0c;在服務器租用市場中&#xff0c;通常比較常見的用戶群體有電商、外貿和視頻等網站。在這里相信很多用戶都有疑問&#xff1a;租用的服務器適不適合用來建立視頻網站呢&#xff1f;接下來我們一起來看看吧~ 首…

VMware安裝windows操作系統

一、下載鏡像包 地址&#xff1a;鏡像包地址。 找到需要的版本下載鏡像包。 二、安裝 打開VMware新建虛擬機&#xff0c;選擇用鏡像文件。將下載的鏡像包加載進去即可。

python opencv 邊緣檢測(sobel、沙爾算子、拉普拉斯算子、Canny)

python opencv 邊緣檢測&#xff08;sobel、沙爾算子、拉普拉斯算子、Canny&#xff09; 這次實驗&#xff0c;我們分別使用opencv 的 sobel算子、沙爾算子、拉普拉斯算子三種算子取進行邊緣檢測&#xff0c;然后后面又使用了Canny算法進行邊緣檢測。 直接看代碼&#xff0c;代…

論文導讀 | 10月專題內容精選:人的預測

編者按 本次論文導讀&#xff0c;編者選擇了10月份OR和MS上與"人的預測"有關的三篇文章&#xff0c;分別涉及群體智慧的提取&#xff0c;個體序列預測的評估&#xff0c;以及決策者對風險的扭曲感知在分布式魯棒優化中的應用。其中&#xff0c;從基于"生成式可能…

Django框架之csrf跨站請求

目錄 一、csrf跨站請求偽造詳解 二、csrf跨域請求偽造 【1】正常服務端 【2】釣魚服務端 三、csrf校驗 【介紹】 form表單中進行csrf校驗&#xff1a; 【1】form表單如何校驗 【2】ajax如何校驗 四、csrf相關裝飾器 【1】csrf_protect裝飾器&#xff1a; 【…

使用VUE3實現簡單顏色盤,吸管組件,useEyeDropper和<input type=“color“ />的使用

1.使用vueuse中的useEyeDropper來實現滴管的功能和使用input中的type"color"屬性來實現顏色盤 效果&#xff1a; 圖標觸發吸管 input觸發顏色盤 組件代碼部分 &#xff1a;<dropper> ---- vueuse使用 <template><div class"sRGBHexWrap fbc…

【Python百寶箱】第三維度的魔法:探索Python游戲世界

Python在游戲開發中的魔力 前言 游戲開發一直是計算機科學中最引人入勝和具有挑戰性的領域之一。隨著技術的不斷進步&#xff0c;開發者們尋找著更快、更靈活的工具來實現他們的創意。在這個探索的過程中&#xff0c;Python以其簡潔、易學和強大的特性成為了游戲開發的熱門選…

C#每天復習一個重要小知識day4:枚舉的概念/申明/使用

目錄 1.枚舉的概念&#xff1a; 2.申明枚舉和申明枚舉變量&#xff1a; 申明枚舉語法&#xff1a; 申明枚舉變量語法&#xff1a; 1.枚舉的概念&#xff1a; 枚舉是什么&#xff1f;枚舉是一個比較特別的存在&#xff0c;它是一個命名的整形常量的集合&#xff0c;一般用它…

Flume采集Kafka并把數據sink到OSS

安裝環境 Java環境, 略 (Flume依賴Java)Flume下載, 略Scala環境, 略 (Kafka依賴Scala)Kafak下載, 略Hadoop下載, 略 (不需要啟動, 寫OSS依賴) 配置Hadoop 下載JindoSDK(連接OSS依賴), 下載地址Github 解壓后配置環境變量 export JINDOSDK_HOME/usr/lib/jindosdk-x.x.x expo…

AWS CLI和EKSCTL的客戶端設置

文章目錄 小結過程安裝AWS CLI安裝EKSCTL在兩個Kubernetes Cluster之間切換 參考 小結 在Linux環境中對AWS CLI和EKSCTL的客戶端進行了設置。 過程 安裝AWS CLI 使用以下指令安裝&#xff1a; curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"…

Qt實現繪制自定義形狀

先創建一個繼承自QWidget的控件&#xff1a; class MyPainterWidget:public QWidget 重寫各種鼠標方法&#xff1a; protected:void paintEvent(QPaintEvent *) override;void mousePressEvent(QMouseEvent *e) override; //按下void mouseMoveEvent(QMouseEvent *e) …

Xposed hook失敗的原因

最近對Xposed的比較感興趣&#xff0c;于是照著網上的給的例子做了一個Xposed模塊&#xff0c;但是在安卓模擬器上死活不生效&#xff0c;最后研究發現了兩個問題導致&#xff1a; 1、XposedBridgeAPI-89.jar 需要放到項目的lib目錄下&#xff0c;而不是libs目錄 2、XposedBr…

HEVC-SCC rgb file input

關鍵字 csc allocateCSCBuffer&#xff08;&#xff09;-> m_apcPicYuvCSC xCheckRDCostIntraCSC():更簡單&#xff0c; enum ACTRDTestTypes { ACT_TWO_CLR 0, //two color space ACT_TRAN_CLR 1, //transformed color space ACT_ORG_CL…