本文主要是介绍OJ半数集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
算法:递归与分治
输入6 可以得到
6不做任何处理
16 左边添加一位数1,之后,不能继续添加
26 126 左边添加一位数2,之后继续进行相同的处理
36 136 左边添加一位数3,之后继续进行相同的处理
对于每一个数,依次可以构造出首位是1~a/2的新数字 对每一个新数字,继续按照相同的方法进行处理 递归结束的条件是:每一个数字都进行了处理
计算半数集的递推式
#include<iostream>
using namespace std;int f (int n) {int x=1;if(n==1){return 1;}else{for(int i=1;i<=n/2;i++){x+=f(i);}}return x;
}int main() {int x,y;cin>>x;y=f(x);cout<<y;return 0;
}
这篇关于OJ半数集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!