Holding Bin-Laden Captive!(hdoj1085)代码并未完全看懂

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

别人的题解

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4
 5 int n1[8005],n2[8005];
 6 int num[4],p[4],sum;
 7
 8 void fuction()
 9 {
10     memset(n1,0,sizeof(n1));
11     memset(n2,0,sizeof(n2));
12     n1[0]=1;/*注意,0面值也要算在内,不然后面if(n1[j])不通过,因为假如要计算1面币是否存在,1=1+0,所以0面币要存在*/
13     int i,j,k;
14     for(i=1;i<=3;i++)//1 2 5硬币
15     {
16         for(j=0;j<=sum;j++)//产生的面额
17             for(k=0;k<=num[i]&&k*p[i]+j<=sum;k++)//个数,判断是否超出sum
18                 if(n1[j])
19                     n2[k*p[i]+j]=1;/*没有明白为什么要赋值1,怎么不是他的个数??*/
20         for(j=0;j<=sum;j++)
21         {
22             n1[j]=n2[j];
23             n2[j]=0;
24         }
25     }
26 }
27 int main()
28 {
29     p[1]=1,p[2]=2,p[3]=5;
30     int i;
31     while(~scanf("%d%d%d",&num[1],&num[2],&num[3])&&(num[1]||num[2]||num[3]))
32     {
33         sum=p[1]*num[1]+p[2]*num[2]+p[3]*num[3];
34         fuction();
35         for(i=0;i<=sum+1;i++)
36             if(n1[i]==0)
37             {
38                 printf("%d\n",i);
39                 break;
40             }
41     }
42     return 0;
43 }
时间: 2024-10-09 17:04:24

Holding Bin-Laden Captive!(hdoj1085)代码并未完全看懂的相关文章

myeclipse调试代码的时候看不到变量的值和jdk源码重新编译

Q:myeclipse调试代码的时候看不到变量的值? A: 调试的类的Class文件里没有包含LocalVariableTable属性表, 这是因为在编译时,编译者为了减少文件大小而不把属性表的信息放在Class文件中. 使用命令为javac -g>http://hllvm.group.iteye.com/group/topic/25798--解决方法:需要重新编译一份用于debug版的. Q:重新编译jdk源码,启用debug信息 >http://www.cnblogs.com/thecat

写在最前面 - 《看懂每一行代码 - kubernetes》

我要写什么 <看懂每一行代码 - kubernetes>会包含k8s整个项目的源码解析,考虑到门槛问题,在开始分析k8s之前我会通过一些更低难度的golang开源项目讲解来帮助大家提升golang编码技能:然后通过与k8s相关的一些项目的讲解,打通阻碍k8s学习的一些大障碍:最后集中火力,将kubernetes项目的整个源码吃透. 总体来说,本系列计划分三步走完成源码层面掌握k8s的目标: golang技能提升 k8s依赖技术 k8s核心组件 目前关于k8s应用的教程已经很多了,其中不乏相当优

软件必备模块-如何看懂代码

为什么写这一篇?因为上班了以后写代码是一个技能,不过大多数时候也时常是现用现差,这个说出来也是丢人.不过生活就是这样吧,不过积累的很重要的一个东西是什么呢,就是运行,调试,搜索相关历史.我们入职一家公司或者接手一个新的项目面临很重要的一个问题就是看懂代码. 找人教,找资料 新接手一个代码,怎么看最快?看书?自己调试?都不是,是找之前写这个代码的人耐心讲给你,不过工作了就发现大家不一定都这么好心.不过万一呢,万一你遇到好人了呢,先找人,再找文档.怎么找人?查看git历史,查看代码中的注释.看开源代

hello world,初级水平抄抄代码先看懂

#include #include #include #define MaxSize 100 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int top; }SqStack; void InitStack(SqStack *&s) { s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; } void DestroyStack(SqStack *s) { free(

如何看懂IL代码--转载

1//示例一:输出整数的立方值.  2private void PrintCube( int i )  3{  4    int cube = i * i * i;  5    Console.WriteLine( cube );  6}  7//方法签名.  8/// hidebysig:MethodAttributes 枚举值之一,指示此方法按名称和签名隐藏,否则只  9/// 按名称隐藏. 10/// cil managed:未查到具体资料,应是“受中间语言管理”之意. 11 12.met

一篇文章看懂iOS代码块Block

iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD.动画.排序及各类回调 注: Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码 Block变量的声明.赋值与调用 Block变量的声明 Block变量的声明格式为: 返回值类型(^Bl

最短路径A*算法原理及java代码实现(看不懂是我的失败)

算法只要懂原理了,代码都是小问题,先看下面理论,尤其是红色标注的(要源码请留下邮箱,有测试用例,直接运行即可) A*算法 百度上的解释: A*[1](A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法. 公式表示为: f(n)=g(n)+h(n), 其中 f(n) 是从初始点经由节点n到目标点的估价函数, g(n) 是在状态空间中从初始节点到n节点的实际代价, h(n) 是从n到目标节点最佳路径的估计代价. 保证找到最短路径(最优解的)条件,关键在于估价函数f(n)的选取: 估价值

一个例子看懂异步代码执行效率

异步代码采用线程池,提供代码执行的并行性,不阻塞当前线程,实例代码,模拟三个耗时操作,分别耗时为1000.1500.1800ms,提供同步与异步的实现方式,Main中以同步异步的方式执行,对比执行时间,同步执行方式为各个方法的执行时间总和,而异步执行方式为最长的那个时间.ps:实际执行情况可能有其他的一些微不足道开销,但大体能反应异步的执行效率. class OutHelper { public DateTime Method1() { Thread.Sleep(1000); return Da

教你看懂网上流传的60行JavaScript代码俄罗斯方块游戏

早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下(主要是以注释的形式). 我用C写一个功能基本齐全的俄罗斯方块的话,大约需要1000行代码的样子.所以60行乍一看还是很让人吃惊的. 但是读懂了代码之后发现其实整个程序并没有使用什么神秘的技术,只不过是利用一些工具或者JavaScript本身的技巧大大简化了代码. 总结起来主要是以下三点 1.使用eval来产生JavaScript代码,减小了代码体积 2.以字符串作为