最长不下降子序列,要求输出的是最长的那个序列数 和长度
长度我会 但是序列数怎么弄弄不出来啊 求助啊
程序代码:#include <stdio.h>
#include <conio.h>
#include <process.h>
int a[]={0,3,18,7,14,10,12,23,41,16,24};
int len,output[10]={0};
void find(int x,int y)
{ int i,j;
if (x>10)
{return;}
for(i=x+1;i<=10;i++)
{ if (a[i]>a[x])
{ output[y]=a[i];
find(i,y+1);}
else if (i==10) y=y-1;
if (i==10)
{
for(j=0;j<=y;j++)
printf ("%d ",output[j]);
printf(" ");
}
}
}
void main()
{
system("cls");
find(0,0);
getch();
}
程序代码:#include <stdio.h>
#include <conio.h>
#include <process.h>
int a[]={0,3,18,7,14,10,12,23,41,16,24};
int len,output[10]={0},outcome[10];
int max;
void find(int x,int y)
{ int i,j;
if (x>10)
{return;}
for(i=x+1;i<=10;i++)
{ if (a[i]>a[x])
{ output[y]=a[i];
find(i,y+1);}
else if (i==10) y=y-1;
if (i==10)
{ if (max<y)
{ max=y;
for(j=0;j<=y;j++) outcome[j]=output[j];
}
for(j=0;j<=y;j++)
printf ("%d ",output[j]);
printf(" ");
}
}
}
void main()
{
int i;
system("cls");
max=0;
find(0,0);
printf("\n\n");
printf("最长字串的长度是%d。\n",max+1);
for(i=0;i<=max;i++)
printf("%d ",outcome[i]);
getch();
}