64,671
社区成员
发帖
与我相关
我的任务
分享
#include <cstdio>
typedef struct {
int a, b;
} data_t;
int max_sum(data_t * data, int n, int min_sum_a, int min_sum_b) {
if (n == 0) {
return (data[0].a >= min_sum_a && data[0].b >= min_sum_b) ? data[0].a + data[0].b : 0;
}
int m_1 = max_sum(data, n - 1, min_sum_a, min_sum_b);
int m_2 = max_sum(data, n - 1, min_sum_a - data[n].a, min_sum_b - data[n].b) + data[n].a + data[n].b;
return m_1 > m_2 ? m_1 : m_2;
}
int main() {
int n;
data_t data[100];
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
scanf("%d %d", &data[i].a, &data[i].b);
}
printf("%d\n", max_sum(data, n, 0, 0) );
return 0;
}
int data[20];
for(int i=0;i<n;i++)
{
data[i]=dataB[i].ai+dataB[i].bi;//data[i]为ai、bi之和
}
如果有需要就根据ai、bi值进行排序
data[]数组中最大值取出来输出就可以了
[/quote]
不用排序吧,直接加个值不久可以了么
int data[20];
for(int i=0;i<n;i++)
{
data[i]=dataB[i].ai+dataB[i].bi;//data[i]为ai、bi之和
}
如果有需要就根据ai、bi值进行排序
data[]数组中最大值取出来输出就可以了
[/quote]m没有看懂精华呀,烦请再解释一下[/quote]
data[i]是一个结构体数组,里面存储第i组数据ai、bi值
首先要对每组数据的ai、bi进行赋值
然后就是基本的逻辑处理了
int data[20];
for(int i=0;i<n;i++)
{
data[i]=dataB[i].ai+dataB[i].bi;//data[i]为ai、bi之和
}
如果有需要就根据ai、bi值进行排序
data[]数组中最大值取出来输出就可以了
[/quote]m没有看懂精华呀,烦请再解释一下
int data[20];
for(int i=0;i<n;i++)
{
data[i]=dataB[i].ai+dataB[i].bi;//data[i]为ai、bi之和
}
如果有需要就根据ai、bi值进行排序
data[]数组中最大值取出来输出就可以了
struct Data
{
int ai;
int bi;
}dataB[20];//结构体数组