2019_GDUT_ новорожденные темы I антологии D HDU-2660

тема:

У меня есть N драгоценные камни, и планируют использовать K из них , чтобы сделать ожерелье для моей матери, но она не будет принимать ожерелье , которое является слишком тяжелым. Учитывая ценность и вес каждого драгоценного камня, пожалуйста , помогите мне найти наиболее ценное ожерелье моей матери будет принимать.
Входные данные
Первая строка ввода является число случаев.
Для каждого случая, первая строка содержит два целых числа N (N <= 20), общее количество камней, и К (К <= N), точное количество камней , чтобы сделать ожерелье.
Тогда N следуют линии, каждая из которых содержит два целых числа: а (а <= 1000), представляющих ценность каждого драгоценного камня, и B (B <= 1000), его вес.
Последняя строка каждого случая содержит целое число W, вес максимального моя мать будет принимать, W <= 1000.
Выход

Для каждого случая, выходной максимально возможное значение ожерелье.

Пример ввода

1

2 1

1 1

1 1

3

Пример вывода

1

Практика: ДФС, текущие параметры, передаваемые по камням, и в последний раз с камнем, где каждый камень от последнего запуска ищет использоваться, или тайм-аут. Потому что это первый кусок от старта ДФСА, поэтому все комбинации могут быть найдены. Распределенные в двух конечных условиях, A K есть камень был использован, один уже избыточный вес.

Код:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,k,a[30],b[30],w,ans,c[30],val,wei;

void dfs(int x,int K)
{
	if (x>k || wei>w) return;
	if (x==k && val>ans)
	ans=val;
	else
	{
		for (int i=K;i<=n;i++)
		{
			if (!c[i])
			{
				c[i]=1;
				wei+=b[i];
				val+=a[i];
				dfs(x+1,i);
				wei-=b[i];
				val-=a[i];
				c[i]=0;
			}
		}
	}
}

int main()
{
	int T;
	cin>>T;
	while (T--)
	{
		ans=0;
		val=wei=0;
		memset(c,0,sizeof(c));
		cin>>n>>k;
		for (int i=1;i<=n;i++)
		cin>>a[i]>>b[i];
		cin>>w;
		dfs(0,0);
		cout<<ans<<endl;
	}
}
Опубликовано 14 оригинальных статей · вона похвала 0 · Просмотров 306

рекомендация

отblog.csdn.net/qq_39581539/article/details/103964214
рекомендация