計算機算法設計與分析<王曉東編著>算法實現題 2-3 半數集問題

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

(1)n∈set(n);

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

(3)按照此規則直到不能再添加自然數爲止。

算法設計:對於一個給定的自然數n,計算半數集set(n)中的自然數個數。

數據輸入:輸入數據由文件名爲input.txt的文本文件提供。每個文件只有一行,給出整數n(0<n<1000)

結果輸出:將計算結果輸出到文件output.txt。輸出文件只有一行,給出半數集set(n)中的元素個數。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
/*半數集問題*/
int func(int n){
    int ans = 1;
    for (int i = 1; i <= n / 2; i++) {
            ans += func(i);
    }
    return ans;
}
int main(){
    int n;
    cin>>n;
    cout<<func(n)<<endl;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章