3331406_wa.c

来自「北大大牛代码 1240道题的原代码 超级权威」· C语言 代码 · 共 68 行

C
68
字号
#include <stdio.h>
#include <string.h>

int value[6];
int num[101];

void dp()
{
	int i, j, max;
	double tot;

	memset(num,-1,sizeof(num));
	num[0] = 0;
	for (i = 0; i < 101; i++)
	{
		if (num[i]!=-1)
		{
			for (j = 0; j < 6; j++)
			{
				if (i+value[j]<101&&(num[i+value[j]]==-1||num[i+value[j]]>num[i]+1))
				{
					num[i+value[j]] = num[i]+1;
				}
			}
		}
	}
	for (i = 1; i < 101; i++)
	{
		for (j = i+1; j < 101; j++)
		{
			if (num[j]==-1||num[j-i]==-1)
			{
				continue;
			}
			if (num[i]==-1||num[i]>num[j]+num[j-i])
			{
				num[i] = num[j]+num[j-i];
			}
		}
	}
	max = 0;tot = 0;
	for (i = 1; i < 101; i++)
	{
		tot += num[i];
		if (num[i] > max)
		{
			max = num[i];
		}
	}
	printf("%.2lf %d\n",tot/100.0,max);
}

int main()
{
	int i, cas;

	scanf("%d",&cas);
	while (cas-- > 0)
	{
		for (i = 0; i < 6; i++)
		{
			scanf("%d",&value[i]);
		}
		dp();
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?