HDU——1085 Holding Bin-Laden Captive!(母函数)

2023-12-28 14:32

本文主要是介绍HDU——1085 Holding Bin-Laden Captive!(母函数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem Description

We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of China!
“Oh, God! How terrible! ”

Don’t be so afraid, guys. Although he hides in a cave of Hang Zhou, he dares not to go out. Laden is so bored recent years that he fling himself into some math problems, and he said that if anyone can solve his problem, he will give himself up!
Ha-ha! Obviously, Laden is too proud of his intelligence! But, what is his problem?
“Given some Chinese Coins (硬币) (three kinds– 1, 2, 5), and their number is num_1, num_2 and num_5 respectively, please output the minimum value that you cannot pay with given coins.”
You, super ACMer, should solve the problem easily, and don’t forget to take $25000000 from Bush!

Input

Input contains multiple test cases. Each test case contains 3 positive integers num_1, num_2 and num_5 (0<=num_i<=1000). A test case containing 0 0 0 terminates the input and this test case is not to be processed.

Output

Output the minimum positive value that one cannot pay with given coins, one line for one case.

Sample Input

1 1 3
0 0 0

Sample Output

4

解题思路:

利用母函数的普通母函数解决问题。
母函数讲解链接:https://blog.csdn.net/vsooda/article/details/7975485

代码:

注:G++ AC ,C++ WA

#include <stdio.h>
#include <string.h>
using namespace std;int ways[8001];  //记录 获取当前价值(下标值) 可以有几种组合方法
int temp[8001];  //ways 的 中间值。
int coin[4] = {0 , 1 , 2 ,5};
int numcoin[4];
int main(){int curmax = 0 , i ,j ,k;  //当前拥有的所有硬币可以得到的最大价值while(scanf("%d %d %d",&numcoin[1] , &numcoin[2] , &numcoin[3]) == 3){if(numcoin[1] == 0 && numcoin[2] == 0 && numcoin[3] == 0)break;curmax = 0;memset(ways , 0 , sizeof(ways));memset(temp , 0 , sizeof(temp));curmax = coin[1] * numcoin[1]; //只有第一种硬币时可以获得的最大价值for(i = 0 ; i <= curmax ; i ++)ways[i] = 1;    //因为 第一种硬币的价值是 1 ,所以直至他能所表示的最大价值 ,每种价值都可以表示出来 ,且都只有一种表示方式。for(i = 2 ; i <= 3 ; i++){curmax = curmax + coin[i] * numcoin[i] ;  //加入第i中硬币,能获得的总价值也随之变大。for( k = 0 ; k <= curmax - coin[i] * numcoin[i]; k ++){for(j = 0 ; j <= curmax ; j = j + coin[i]){temp[k + j] = temp[j + k] + ways[k] ;//加上第 i 中硬币 , 获得价值(k + j)的方法数 = 获得价值 j 的方法数 * 获得价值 k 的方法数。//其中价值 j 由第 i 中硬币组成(只有一种方法)//价值 k 的组成方法为 ways[k]}}for(k = 0 ; k <= curmax ; k++)ways[k] = temp[k];memset(temp , 0 , sizeof(temp));}for(i = 0 ; i <= curmax ; i++)if(ways[i] == 0){ //表示有 0 中组合方法可以获得价值 i。即无法获得价值 i.printf("%d\n",i);break;}if(i == curmax  + 1) //最大价值以内的值都能够表示,则结果输出为 最大价值+1printf("%d\n",i);}return 0;
}

这篇关于HDU——1085 Holding Bin-Laden Captive!(母函数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546271

相关文章

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

python中update()函数的用法和一些例子

《python中update()函数的用法和一些例子》update()方法是字典对象的方法,用于将一个字典中的键值对更新到另一个字典中,:本文主要介绍python中update()函数的用法和一些... 目录前言用法注意事项示例示例 1: 使用另一个字典来更新示例 2: 使用可迭代对象来更新示例 3: 使用

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1