越大越聪明吗?

越大越聪明吗?
                                                                越大越聪明吗?
                 这是一道动态规划题目,这里只提供个人代码:

#include  < iostream >
struct  elephone
{
    
int weight,iq,num;
}
;
int  k,s[ 1001 ],max = 0 ,vis[ 1001 ],S[ 1001 ],dp[ 1001 ][ 1001 ];
elephone a[
1000 ];

void  dpf( int  i, int  j)
{
    
int &ans=dp[i][j];
    
if(ans!=-1return;
    ans
=1;
    s[j]
=a[i].num+1;
    
if(j>max) {for(int q=1;q<=j;q++) S[q]=s[q];max=j;}
    
for(int p=0;p<k;p++)
    
{
        
if(!vis[p]&&a[p].weight>a[i].weight&&a[p].iq<a[i].iq)
        
{
            vis[p]
=1;
            dpf(p,j
+1);
            vis[p]
=0;
        }

    }

}

int  main()
{
    
int i=0;
    memset(dp,
-1,sizeof(dp));
    memset(vis,
0,sizeof(vis));
    
while(scanf("%d%d",&a[i].weight,&a[i].iq)==2)
    
{
        a[i].num
=i;
        
++i;
    }

    k
=i;
    
for(int q=0;q<k;q++)
    
{
    vis[q]
=1;
    dpf(q,
1);
    vis[q]
=0;
    }

    printf(
"%d\n",max);
    
for(int r=1;r<=max;r++)
        printf(
"%d\n",S[r]);
    
return 0;
}





         

你可能感兴趣的:(越大越聪明吗?)