2013年10月10日 星期四

UVA 111 History Grading

[LIS基礎]
這題練習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;
}

沒有留言:

張貼留言