【题解】数的计数
題目描述
我們要求找出具有下列性質數的個數(包含輸入的自然數n):
先輸入一個自然數n(n≤1000),然后對此自然數按照如下方法進行處理:
l、不作任何處理;
2、茬它的左邊加上一個自然數,但該自然數不能超過原數的一半;;
3、加上數后,繼續按此規則進行處理,直到不能再而 自然數為止。
例如輸入6,則符合條件的數有6、16、26、36、126、136。
輸入輸出格式
輸入格式:
一行,即一個自然數n(1≤n≤1000)。
輸出格式:
一行,即滿足條件的數的個數。
輸入輸出樣例
輸入樣例: 6 輸出樣例: 6這道題可以硬解,就用遞歸做吧
如果直接遞歸當然會超時,我們可以用記憶化搜索和數組計數
先枚舉從1到n/2,然后在根據枚舉出的結果往下分支,每做一次,數組check[n]就會增加方案數,最后輸出check[n]就是我要的結果
具體程序如下:
#include<iostream> using namespace std; int check[1005]; void add(int n) {if (check[n]!=0) return;check[n]=1;for (register int i=1;i<=n/2;i++){add(i);check[n]+=check[i];} } int main() {int n;cin>>n;add(n);cout<<check[n]; }
?
?轉載于:https://www.cnblogs.com/2021-yanghaoran/p/10716652.html
總結
- 上一篇: 在IIS7中应用Application
- 下一篇: 网络攻防第八周作业