题目大意:
将一对硬币分成两份,使得两份的总金额差最小。比如有三枚硬币,价值分别为2,3和5,则分成的两堆就是2,3一堆和 5一堆,它们的总金额差为0。
思路:
属于动态规划问题,刚开始看,想到了最大连续子序列和的问题,但又有点不一样。后来发现得用0-1背包来解决。定义一个数组dp[Max], Max要大一些,表示提供的硬币所能组成的所有和,dp[i]=1表示提供的硬币能够凑成 i , dp[i]=0表示凑不成 i , 这样从sum/2往下找,找到最大的,就是这些硬币所能凑成的总和最接近于sum/2的。
代码如下:
#include <iostream> #include <vector> #include <cstring> #include <string> #include <algorithm> using namespace std; int main() { freopen( "test.txt", "r", stdin ); int n, m, sum = 0, value, finalsum; vector<int> v; int T = 0; cin>>T; while( T-- ) { cin>>m; for( int i = 0; i < m; i++ ) { cin>>value; v.push_back(value); sum += value; } vector<int> dp(555555); dp[0] = 1; for( int i = 0; i < m; i++ ) { for( int j = sum; j>=v[i]; j-- ) { if( dp[j - v[i]] ) //若v[i]=2,则当j=2时,dp[0]=1,说明2能够由一个价值为2的硬币凑成。 dp[j] = 1; } } int tag = 0; for( int i = sum/2; i >= 0; i-- ) { if( dp[i] ) { tag = i; break; } } cout<<sum-2*tag<<endl; sum = 0; v.clear(); } return 0; }
相关推荐
CoinChange.java
在计算机科学领域,"Coin Change"问题是一个经典的问题,它涉及到计算在给定一组不同面值的硬币时,组成特定总金额的最少硬币数量。这个问题源自实际生活中的找零场景,但它的理论意义远超其应用场景。在本篇讨论中...
UVa Online Judge是一个著名的在线编程竞赛平台,它提供了大量的算法问题供程序员们挑战,以提升他们的编程技巧和算法理解能力。这个压缩包包含了在UVa平台上部分题目的解答,是学习和参考的好资源。让我们详细了解...
### 动态规划解决找零问题 #### 一、引言 找零问题是计算机科学中的一个经典问题,尤其是在算法设计领域。这个问题的核心是如何利用最少数量的硬币来组成某个特定金额。例如,如果需要找零12元,而手头有的硬币面额...
c c语言_leetcode题解之0322_coin_change
Coin3D是一个开源的3D图形库,主要目标是为应用程序开发者提供一个高效且易于使用的接口,以便在OpenGL上构建三维应用。Coin3D基于OpenInventor标准,这是一个广泛认可的3D建模和可视化工具包。Coin-3.1.3是该库的一...
《Coin3D三维可视化开发包详解》 Coin3D,作为一个强大的开源三维可视化库,为开发者提供了丰富的工具和接口,用于构建复杂的3D图形应用程序。它基于Open Inventor标准,这是一个由Silicon Graphics公司创建的高级...
Coin3DWinForm bin 是一个与.NET框架相关的库,它为Windows Forms应用程序提供了与Coin3D交互的能力。Coin3D是一个开源的三维图形库,基于Open Inventor标准,用于构建高性能的可视化应用。这个压缩包包含的是Coin3D...
《LeetCode-Coin-Change:探索Java解题策略》 在编程的世界里,LeetCode是一个深受程序员喜爱的在线平台,它提供了丰富的算法题目用于提升编程技能。本篇将聚焦于LeetCode上的“Coin Change”问题,这是一个经典的...
Coin3D是一个开源的三维图形库,主要用于构建交互式的3D应用程序。这个“coin3D-3.1.3-SoQt-SoWin-VC10.7z”压缩包包含的是Coin3D的3.1.3版本,适配于Qt和Windows平台,且是用Visual Studio 2010 (VC10) 编译的...
Windows下编译利用openInventor进行可视化Geant4所需的Coin3D库文件(含coin-3.1.3和sowin-1.5.0)。原版本使用VS2010编译,经验证,VS2012也可以用,与Geant4版本无关。新版本修改如下: 1、修改了Coin3D\include\...
《Coin3D-Qt.PDF》是一份详细探讨Coin3D与Qt集成的文档,它主要阐述了如何在Qt应用程序中利用Coin3D库来创建3D图形界面。Coin3D是一个开源的3D图形库,它实现了OpenInventor API,而Qt则是一个广泛使用的C++图形用户...
《Coin3D文档参考手册》是一份详尽的资源,为开发者提供了全面了解Coin3D框架的途径。Coin3D是一个开源的三维图形库,基于Open Inventor标准,旨在为科学可视化、医疗图像处理、教育以及游戏开发等领域提供强大的3D...
《Coin3D在VS2010环境下的编译与应用》 Coin3D是一个开源的3D图形库,主要用于创建交互式三维图形应用程序。它基于SOLID(Simple Open Inventor Descendant)的设计,旨在提供一个高效且易于使用的接口,用于开发...
Coin3D是一个开源的3D图形库,它基于Open Inventor标准,主要用于创建交互式的3D应用程序。这个“编译好的Coin3d资料”压缩包是官方提供的,包含了解压后的源码、编译好的库文件以及可能的示例程序,方便用户在自己...
"Coin-slider-master" 是一个可能与网页开发相关的项目,标题和描述都反映了这一点。这个项目的重点可能是实现一种基于Coin Slider的交互式元素,这通常是一种动态展示图片或内容的滑动展示组件,常用于网站的轮播图...
Open Inventor和Coin3D是两个紧密相关的图形库,用于构建高级三维图形应用程序,尤其是在科学可视化和工程领域。Open Inventor是由SGI公司开发的一种高级交互式3D图形API(应用程序编程接口),而Coin3D则是一个开源...
在MFC(Microsoft Foundation Classes)框架中集成Coin3D,是一项技术挑战,但也是扩展MFC应用程序3D图形能力的有效途径。Coin3D是一个开源的3D图形库,基于Open Inventor标准,提供了丰富的交互式3D场景构建工具。...