NYOJ 106(背包)

 //此为背包问题 ,289为0-1背包 
#include<stdio.h>
#include<stdlib.h> 
typedef struct data 
{
   int w;
   int v;    
}data; 
int cmp(const void *a,const void *b)
{
   return ((data*)a)->v-((data*)b)->v; 
}//不加括号不行啊 
int main()
{ 
    data a[10];
    int T,v,w,sum,s,m;
    scanf("%d",&T);
    while(T--)
    {
     sum=0;
     scanf("%d%d",&s,&m);
     for(int i=0;i<s;i++)
	     scanf("%d%d",&a[i].v,&a[i].w);	
	 qsort(a,s,sizeof(data),cmp);
	 for(int i=s-1;m>0;i--)
	 //发现i也要加上int,否则\调试\未命名1.cpp name  lookup of `i' changed for new ISO `for' scoping  
    	 if(a[i].w<=m)
         {
            sum+=a[i].v*a[i].w;
            m-=a[i].w;
         }
    	 else 
         {
              sum+=m*a[i].v;
               m=0;
         }
	 printf("%d\n",sum);	    
    }  
    system("pause");
    return 0;  		
} 




        

  

posted @ 2012-05-09 23:19  加拿大小哥哥  阅读(285)  评论(0编辑  收藏  举报