ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
来源:互联网 发布:魔蝎数据怎么看 编辑:程序博客网 时间:2024/05/20 21:23
最长单调递增子序列问题(动态规划)o()
// 最长单调递增子序列.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#define N 100
using namespace std;
//递归打印最长递增子序列
void print_it(char *str,int *pre,int last)
{
if(last==-1)
return;
else
{
print_it(str,pre,pre[last]);
cout<<str[last];
}
}
int _tmain(int argc, _TCHAR* argv[])
{
//存储原字符串
char str[N];
//len[j]存储到str[j]为止的最长递增子序列长度
int len[N];
//pre[j]存储到str[j]为止的最长递增子序列的前一个字符的位置
int pre[N];
int cases;
cout<<"请输入案例个数:"<<endl;
cin>>cases;
while(cases--)
{
cout<<"请输入字符串:"<<endl;
cin>>str;
//初始化各变量
int i;
int length = strlen(str);
for(i=0;i<length;i++)
{
len[i] = 1;
pre[i] = -1;
}
int j;
int max = 0;
for(j=1;j<length;j++)
{
for(i=0;i<j;i++)
{
max = 0;
if(str[j]>str[i])
{
max = len[i]+1;
if(max>len[j])
{
len[j] = max;
pre[j] = i;
}
}
}
}
//找最大的len[i]
//last为最长的递增子序列的最后一个字符的位置
max = 0;
int last;
for(i=0;i<length;i++)
{
if(len[i]>max)
{
max = len[i];
last = i;
}
}
cout<<"最长递增子序列的长度为:"<<max<<endl;
cout<<"最长递增子序列为:"<<endl;
print_it(str,pre,last);
cout<<endl;
}
system("pause");
return 0;
}
-----------------------------------------------程序测试----------------------------------------
请输入案例个数:
2
请输入字符串:
abceabf
最长递增子序列的长度为:5
最长递增子序列为:
abcef
请输入字符串:
abcabcdef
最长递增子序列的长度为:6
最长递增子序列为:
abcdef
请按任意键继续. . .
- ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
- ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
- 找出n个数组成的最长单调递增子序列( 动态规划O(nlogn) )
- 最长递增子序列的求解(O(n*n),O(nlogn))——动态规划
- 动态规划解最长递增子序列(O(n^2))
- 用O(nlog(n)实现最长递增子序列问题
- 最长递增子序列问题,O(N*logN)实现
- 最长单调递增子序列(O(n^2))
- NYOJ 17 (最长单调递增子序列) O (n*n) + O(n*lgn)
- 动态规划--最长上升子序列问题(LIS) O(n^2) ,O(nlogn)
- 动态规划---最长上升子序列问题(O(nlogn),O(n^2))
- 动态规划:最长单调递增子序列
- 动态规划--最长单调递增子序列
- 【动态规划】单调递增最长子序列
- 最长单调递增子序列--动态规划
- 算法_动态规划_最长单调递增子序列问题(O(nlogn)的时间复杂度)
- HDU1950,单调递增最长子序列(n*lgn)算法
- 动态规划-单调递增最长子序列(三)
- 红黑树的各种操作
- 流水线调度最优问题(装配线调度问题)动态规划 O(n)时间(线性时间)C++实现
- 矩阵链乘法问题(给A1A2A3...An加括号,使之乘法次数最小)动态规划问题C++实现
- ACM最长公共子序列问题(动态规划)C++实现
- ACM 重构二叉树 C++实现
- ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
- 最长递增子序列优化算法(时间复杂度为nlgn)C++实现
- 最优二叉查找树的期望搜索代价(动态规划)C++实现
- 活动选择问题(活动安排问题)(最大数目活动选择问题)贪心算法C++实现
- 区间图着色问题(贪心算法)C++实现
- ACM小明的数学题Ⅲ
- ACM第K个数 C++实现
- 希尔排序C++实现
- pthread_cond_timedwait 实例