蓝色精灵 2012-07-07 21:33:00
点我顶贴
收藏
删除
#include<iostream>
using namespace std;
void jh(int &a,int &b){
int c=a;
a=b;
b=c;
}
void hs(int a[],int b[],int c[],int d,int e,int f,int &g){
int h,k;
for(int n=0;n<=e-1;n++){
h=0;
for(int m=0;m<d;m++){
if(n==c[m]){
h=1;
break;
}
else
h=0;
}
if(h==0){
c[d]=n;
for(int m=0;m<=d;m++){
h+=a[c[m]];
}
if(h<=f){
k=0;
for(int m=0;m<=d;m++){
k+=b[c[m]];
}
if(k>g){
g=k;
}
}
else
break;
}
if(d!=e-1){
hs(a,b,c,d+1,e,f,g);
}
}
}
int main(){
int js,zds,zdxjb=0,t;
cin>>zds>>js;
int x[js],y[js],z[js];
for(int i=0;i<=js-1;i++){
cin>>x[i]>>t;
y[i]=x[i]*t;
}
for(int i=1;i<=js-1;i++){
for(int j=js-1;j>=i;j--){
if(x[j]<x[j-1]){
jh(x[j],x[j-1]);
jh(y[j],y[j-1]);
}
}
}
hs(x,y,z,0,js,zds,zdxjb);
cout<<zdxjb;
return 0;
}