#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int* print_max_len_inc_subsq(int *seq, int n)
{
//记录各个递增子序列的长度
int *tmp = (int*)malloc((n+1)*sizeof(int));
int *max = (int*)malloc((n+1)*sizeof(int));
memset(tmp, 0, sizeof(int)*n);
int i = 0, j = 0;
int last_max = seq[0];
int k = 0;
for(i = 0; i <= n; i++)
{
max[i] = 0;
tmp[i] = 1;
}
//max[0] = seq[0];
//tmp[i] = 1;
int len = 1;
for( i = 0; i < n; i++)
{
for(j = 0; j <= i; j++)
{
if(seq[i] > max[j])
{
tmp[i+1] = tmp[i] + 1;//长度为i+1的子序列的最长递增子序列的长度。
max[i+1] = seq[i]; //长度为i+1的子序列的最大元素值。
//last_max = seq[j]
}
}
}
return tmp;
}
int main(int argc, char* argv[])
{
int n = 12;
int a[] = {5,6,2,3,4,7,9,6,7,8,9,10};
int i = 0;
printf("The number sequence is :\n");
for(i = 0; i < n; i++)
{
printf("%d,",a[i]);
}
printf("\n");
int *tmp = print_max_len_inc_subsq(a, n);
for(i = 0; i <= n; i++)
{
printf("tmp[%d] = %d\n", i, tmp[i]);
}
return 0;
}
矩阵链最优相乘括号法
最新推荐文章于 2024-08-02 11:17:36 发布