《动态规划》hdoj acm 3.2.4 最长有序子序列

来源:互联网 发布:网络嗅探器用哪个好 编辑:程序博客网 时间:2024/06/06 14:26
#include<stdio.h>#include<stdlib.h>typedef struct{    int w;    int s;    int num;    int pre;}dot;int cmp(const void*a,const void *b){    return (*(dot *)a).w - (*(dot *)b).w;}int main(){    dot que[1005];    int number[1005],ans[1005];    int n=0,i,j;    while(scanf("%d%d",&que[n].w,&que[n].s)!=EOF)        n++;    for(i=0;i<=n;i++)    {        que[i].num=i;        que[i].pre=i;        number[i]=1;    }    n++;    qsort(que,n,sizeof(dot),cmp);    for(i=0;i<n;i++)    {        for(j=0;j<i;j++)        {            if(que[j].s>que[i].s&&number[i]<=number[j])            {                number[i]=number[j]+1;                que[i].pre=j;            }        }    }    int u=0;    int max=0;    int k=0;    for(i=n-1;i>=0;i--)    {        if(number[i]>max)        {            max=number[i];            u=i;        }    }    while(max--)    {        ans[k]=que[u].num;        k++;        u=que[u].pre;    }    printf("%d\n",k);    for(i=k-1;i>=0;i--)        printf("%d\n",ans[i]+1);    return 0;}
0 0
原创粉丝点击