本人新手,C语言算是刚刚学完基础。。。
#include<stdio.h>
#include<stdlib.h>
struct yao
{
int time;
int price;
};
int sumprice(const struct yao* num, int i,int sum);
int m, t;
int time;
int main(void)
{
scanf("%d %d", &t, &m);
struct yao *num;
num = (struct yao*)malloc(m*sizeof(struct yao));
int i;
for (i = 0; i < m; i++)
{
scanf("%d %d", &num[i].time, &num[i].price);
}
int sum = 0;
int a, b, max=0;
for (a = 0; a < m; a++)
{
for (b = a + 1; b < m; b++)
{
time = num[a].time + num[b].time;
if (time <= t)
{
sum = num[a].price + num[b].price;
sum = sumprice(num, b + 1, sum);
}
if (sum > max) max = sum;
sum = 0;
time = 0;
}
}
for (a = 0; a < m; a++)
{
if (num[a].price>max&&num[a].time <= t)
max = num[a].price;
}
printf("%d", max);
return 0;
}
int sumprice(const struct yao* num, int i,int sum)
{
int a;
int lin = sum, fu = sum, fu2 = time;
for (a = i; a < m; a++)
{
if ((time += num[a].time) <= t)
{
lin += num[a].price;
lin=sumprice(num, a + 1,lin);
}
else
time = time - num[a].time;
if (lin>sum) sum = lin;
lin = fu;
time = fu2;
}
return sum;
}