最长不下降子序列,要求输出的是最长的那个序列数 和长度
长度我会 但是序列数怎么弄弄不出来啊 求助啊
#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(); }