這題練習LIS。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define max(a,b) (a>b) ? (a):(b) int LIS(int a[20],int dg) { int lg[20]; lg[0]=1; for(int lx=1;lx<dg;lx++) { lg[lx]=1; for(int ly=0;ly<lx;ly++) if(a[lx]>a[ly]) lg[lx]=max(lg[lx],lg[ly]+1); } int m=1; for(int lx=1;lx<dg;lx++) m=max(m,lg[lx]); return m; } int main() { int dg;scanf("%d",&dg); int a[20]; int inp[20]; for(int lx=0;lx<dg;lx++) scanf("%d",&a[lx]); while(scanf("%d",&inp[a[0]-1])!=EOF) { for(int lx=1;lx<dg;lx++) scanf("%d",&inp[a[lx]-1]); printf("%d\n",LIS(inp,dg)); } return 0; }
沒有留言:
張貼留言