Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
教科书上的做法,数组复制出来排序,再跟原来的求最大子序列长度,总是WA,谁能帮我看看啊!!// 2533 Longest Ordered Subsequence #include <stdio.h> #include <stdlib.h> int lcs_length(int x[],int y[],int n); int cmp (const void *a,const void *b); void copy(int src[],int dest[],int n); /* void qsort(int a[],int i,int j); int findpivot(int a[],int i,int j); int partition(int a[],int l,int r,int pivot); void swap(int a[],int i,int j); */ int main() { int a[1001],tmp[1001]; // 0 to 10000 int n; // 1 <= N <= 1000 int i; scanf("%d",&n); for (i=0;i<n;i++) { scanf("%d",&a[i]); } copy(a,tmp,n); qsort(tmp,n,sizeof(int),cmp); printf("%d\n",lcs_length(a,tmp,n)); return 0; } int lcs_length(int x[],int y[],int n) { int i,j; int c[n+1][n+1]; for (i=1;i<=n;i++) c[i][0] = 0; for (j=0;j<=n;j++) c[0][j] = 0; for (i=1;i<=n;i++) { for (j=1;j<=n;j++) { if (x[i-1]==y[j-1]) { c[i][j] = c[i-1][j-1]+1; } else if (c[i-1][j] >= c[i][j-1]) { c[i][j] = c[i-1][j]; } else { c[i][j] = c[i][j-1]; } } } return c[n][n]; } int cmp (const void *a,const void *b) { return *(int *)a - *(int *)b; } void copy(int src[],int dest[],int n) { int i; for(i=0;i<n;i++) dest[i]=src[i]; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator