讨论 / 完全用c语言写的
哈哈哈哈222 2018-09-19 23:11:58
点我顶贴 收藏 删除
#include<stdio.h>

#include<stdlib.h>

long long max(long long money,int num, long long good[],int important[]);

void deletearray1(int i,long long good[],int num,long long x[]);

void deletearray2(int i,int importance[],int num,int x[]);

long long sort(long long x[],int num);

int main(){

long long money;

scanf("%lld",&money);

getchar();

int num;

scanf("%d",&num);

getchar();

long long good[num];

int important[num];

for(int i=0;i<num;i++){

scanf("%lld %d",&good[i],&important[i]);

}

long long all;

all = max(money,num,good,important);

printf("%lld",all);

return 0;

}

long long max(long long money,int num, long long good[],int important[]){

long long x[num];

long long x2[num-1];

int y2[num-1];

int i;

for(i=0;i<num;i++){

x[i]=0;

}

if(num<=0){

return 0;

}

i=0;

while(good[i]>money && i<num){

i++;

}

if(i==num)

return 0;

for(i=0;i<num;i++){

if(money>good[0]){

x[i]+=good[0]*important[0];

deletearray1(0,good,num-i,x2);

deletearray2(0,important,num-i,y2);

x[i]+=max(money-good[0],num-1-i,x2,y2);

}

deletearray1(0,good,num-i,good);

deletearray2(0,important,num-i,important);

}

return sort(x,num);

}

void deletearray1(int i,long long good[],int num,long long x[]){

for(int j = 0;j<num;j++){

if(j<i){

x[j]=good[j];

}

else if(j>i){

x[j-1]=good[j];

}

}

}

void deletearray2(int i,int importance[],int num,int x[]){

for(int j = 0;j<num;j++){

if(j<i){

x[j]=importance[j];

}

else if(j>i){

x[j-1]=importance[j];

}

}

}

long long sort(long long x[],int num){

for(int i = 0;i<num;i++){

if(x[0]<x[i]){

x[0]=x[i];

}

}

return x[0];

}

查看更多回复
提交回复