标签:str out pac mes 偶数 递归 P20 cin for
【题目描述】 我们要求找出具有下列性质数的个数(包括输入的自然数n)。先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 加上数后,继续按此规则进行处理,直到不能再加自然数为止。 【输入】 自然数n(n≤1000)。 【输出】 满足条件的数。 【输入样例】 6 满足条件的数为 6(此部分不必输出) 16 26 126 36 136 【输出样例】 6
#include <iostream> using namespace std; int h[1005]; int main() { int n,i; cin>>n; h[1]=1; for(i=2;i<=n;i++) { if(i%2==0) h[i]=h[i-1]+h[i/2]; else h[i]=h[i-1]; } cout<<h[n]<<endl; return 0; }
这道题目有很多解法,穷尽法一个一个递归的话会超时;
找出规律发现:i为奇数时,h[i]=h[i-1];i为偶数时,h[i]=h[i-1]+h[i/2]
标签:str out pac mes 偶数 递归 P20 cin for
原文地址:https://www.cnblogs.com/liufei-/p/10111452.html