0基础硬币问题

已知,有一批不同面值的硬币,没有硬币个数限制。求得到S的全部组合,以及最小。最大硬币个数。

最小、最大硬币个数能够用贪心法,可是不一定能够得到有效解,可是能够提高结题速度。此处略。

以下的解法比求解最大、最小硬币比較耗时。

static int* set;

static int  Min = 1<<10;
static  int Max = 0;

void LeastCoin(int* Value, int Len, int Goal, int cur)
{
	if(Goal == 0)
	{
		for(int i = 0; i < cur; i++)
		{
			printf("%d ", set[i]);
		}
		if(cur > Max)
		{
			Max = cur;
		}
		if(Min > cur)
		{
			Min = cur;
		}
		printf("\n");
	}
	else
	{
		for(int i = 0; i < Len; i++)
		{

			if(Goal >= Value[i])
			{
				int ok = 1;
				for(int j = 0; j < cur; j++)
				{
					if(set[j] > Value[i])
					{
						ok = 0;
						break;
					}
				}
				if(ok)
				{
				   set[cur] = Value[i];
				   LeastCoin(Value, Len, Goal - Value[i], cur + 1);
				}
			}		

		}

	}

}

void WLeastCoin(int* Value, int Len, int Goal)
{

	printf("goal: %d\n", Goal);
	set = new int [Len];
	memset(set, 0 , sizeof(int)*Len);
	int cur = 0;
	LeastCoin(Value, Len, Goal,  cur);
	printf("Max:%d \n", Max);
	printf("Min:%d \n", Min);

}
时间: 2024-10-09 22:49:08

0基础硬币问题的相关文章

[JAVA &amp;#183; 0基础]:11.终结者-final

关于finalkeyword的总结,是非常easy学习和掌握的,大致分为用final修饰的符号常量.类.方法.属性四部分.而这四部分的内容也是我们必须掌握的,非常有用.在项目中常常来利用finalkeyword来帮忙以完毕我们特定的任务.以下就来看看终于的final: 符号常量 用 final 修饰的变量就称之为终于变量.也称之为符号常量. 比如: double PI = 3.14; ===>>>  final double PI = 3.14;  //符号常量 Demo <spa

0基础学C语言:C语言视频教程免费分享!

C语言是一种通用的.过程式的编程语言,广泛用于系统与应用软件的开发.作为计算机编程的基础语言,长期以来它一直是编程爱好者追捧而又比较难学的语言.C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点. 很多初学者在学习C语言的时候,如果有适合自己的视频教程,学习起来就会事半功倍.今天在这里给大家分享一个0基础学习C语言的视频教程,需要的朋友可以看看,作为参考! 课程部分截图: 百度云盘下载:http://pan.baidu.com/s/1jIbtWEi 密码:npd9

华为0基础——名字的美丽度

值得注意:对于每一个名字来说:名字的美丽度=26*字母个数最多的+25*字母个数其次的+24*字母个数再其次的-- 源程序: #include<iostream> #include<string> using namespace std; const int M=50; int main() { int n,i,j,k,len; int beauti[M]={0}; int t; cin>>n; char a[M][30]; for(i=0;i<n;i++) ci

React Native 从零到高级- 0基础学习路线

React Native QQ交流群(美团,饿了么,阿里的大神都在里面):576089067 React Native  从0 基础到高级 视频教程正在重录中,要了解最新进度可以关注菜鸟窝微信公众号(下图),旧版视频教程可以点击这里在线学习 学习路线(文章版),江清清老师出品,点击这里关注江清清 ,同时可以关注一下他的课程 基础入门:1.React Native For Android环境配置以及第一个实例2.React Native开发IDE安装及配置3.React Native应用设备运行(

【转】Android 工程在4.0基础上混淆

Android现在对安全方面要求比较高了,我今天要做的对apk进行混淆,用所有的第三方工具都不能反编译,作者的知识产权得到保障了,是不是碉堡了. 一,首先说明我这是在4.0基础上进行的. 先看看project.properties 这个文件. # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file

Zabbix 3.0 基础介绍 [一]

Zabbix 3.0 基础介绍 [一] zabbix 一.Zabbix介绍 zabbix 简介   Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利   zabbix是一个基于Web界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案.   zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题

在Eclipse中使用JUnit4进行单元測试(0基础篇)

本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数,这些函数的功能可能非常强大,但我们在程序中仅仅用到该函数的一小部分功能,而且经过调试能够确定,这一小部分功能是正确的.可是,我们同一时候应该确保每个函数都全然正确,由于假设我们今后假设对程序进行扩展,用到了某个函数的其它功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情.所以说,每编写完一个函数之后,都应该对这

Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java  19:08 2 熟悉Eclipse开发工具  12:42 3 Java语言基础  17:39 4 流程控制  14:53 5 数组  14:44 6 字符串  34:32 7 类和对象  29:30 8 猜拳游戏  33:39 9 模拟银行柜员机程序  36:35 10 退休金结算程序  本课程由

0基础搭建Hadoop大数据处理-编程

Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和要点总结. Hadoop是一个强大的并行框架,它允许任务在其分布式集群上并行处理.但是编写.调试Hadoop程序都有很大难度.正因为如此,Hadoop的开发者开发出了Hadoop Eclipse插件,它在Hadoop的开发环境中嵌入了Eclipse,从而实现了开发环境的图形化,降低了编程难度.在安装