`
人生难得糊涂
  • 浏览: 114496 次
社区版块
存档分类
最新评论

半数集问题

 
阅读更多

问题描述

在n的左边加上一个自然数 该自然数步能超过最近添加的数的一半

例如set(6)={6,16,26,126,36,136}

输出给的的正整数n的半数集一共有多少个元素

input

6

output

6

/*********************************************************************************/

分析:

用递推的思想

假如已经填好了所求半数集元素中的一位x(例如6)从1 到x/2遍历,求的其前一位p(如2),然后对p再进行从1到p/2遍历 求得其前一位(1)

#include<iostream>
using namespace std;
int f(int n,int num)
{
	for(int i=1;i<=n/2;i++)
	{
		num=f(i,num+1);
	}
	return num;
}
int main()
{
	int n;
	cin>>n;
	cout<<f(n,0)+1<<endl;//+1是表示递归算法中没考虑n本身的情况
}

 相似问题 :

http://124654439.iteye.com/admin/blogs/2068835

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics