- 论坛徽章:
- 0
|
递归实现吧
给一个例子,我只计算了最长子序列的长度
- #include <iostream>
- using namespace std;
- int MaxSubseq_Recur(int nums[], int count, int max);
- int main(){
- int nums[]={300, 250, 275, 252, 200, 138, 245};
- int count=sizeof(nums)/sizeof(int);
-
- cout<<"The result of sequence {";
- for (int i=0; i<count-1; ++i)
- cout<<nums[i]<<',';
- cout<<nums[count-1]<<"} is "<<MaxSubseq_Recur(nums, count, 350)<<endl;
-
- return 0;
- }
-
- int MaxSubseq_Recur(int nums[], int count, int max) {
- //在序列(nums[], count)中寻找比最长子序列,其中序列中的数应比max都小
- int tmp1, tmp2;
- if(count==1)
- return nums[0]<max?1:0;
- else {
- if(nums[0]<max) { //nums[0]可选
- tmp1=MaxSubseq_Recur(nums+1, count-1, nums[0])+1; //选
- tmp2=MaxSubseq_Recur(nums+1, count-1, max); //不选
- return tmp1>tmp2?tmp1:tmp2;
- }
- else
- return MaxSubseq_Recur(nums+1, count-1, max);
- }
- }
复制代码
望大家多多指教!
[ 本帖最后由 tyc611 于 2006-5-10 10:22 编辑 ] |
|