现在的位置: 首页 > 综合 > 正文

NOIP1996 砝码称重

2017年10月12日 ⁄ 综合 ⁄ 共 705字 ⁄ 字号 评论关闭

最近在学dp,,忽见一道砝码称重,,

实在想不出和dp有个几毛钱的关系,,

于是乎我就枚举了。。

木有测试数据=。=(求神犇给链接)

所以就上代码了。。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#define MAX 1010
using namespace std;
int num[7],value[7],ans;
bool opt[MAX];
void begin(),end();
int find(int ma,int k[])
{
	opt[ma] = true;
	for (int i = 1; i <= 6; i++)
	{
		if ( k[i] > 0 )
		{
			k[i]--;
			int s = ma - value[i];
			find(s,k);
			k[i]++;
		}
	}
	return 0;
}
void work()
{
	value[1] = 1;
	value[2] = 2;
	value[3] = 3;
	value[4] = 5;
	value[5] = 10;
	value[6] = 20;
	int sum = 0;
	for (int i = 1; i <= 6; i++)
	{
		cin>>num[i];
		sum += num[i] * value[i];
	}
	find(sum,num);
	for (int i = 1; i <= 1000; i++)
	{
		if ( opt[i] == true )
		{
			ans++;
		}
	}
	cout<<ans;
}
int main()
{
//	begin();
	work();
//	end();
	return 0; 
}
void begin()
{
	freopen("input.in","r",stdin);
	freopen("output.out","w",stdout);
}
void end()
{
	fclose(stdin);
	fclose(stdout);
}

抱歉!评论已关闭.