uva:10700 - Camel trading(贪婪)
题目大意:给出一些表达式,表达式由数字和加号乘号组成,数字范围【1,20】。这些表达式可能缺少了括号,问这种表达式加上括号后能得到的最大值和最小值。
解题思路:由于这些数的都是正整数,所以能够用贪心。不然看出最大值就是先做完加法在做乘法,最小值就是先做乘法在做加法。注意这里的数值要用long long 由于比表达式的值可能会超过int。
代码:
#include <stdio.h>
#include <string.h> const int N = 15;
char op[N];
char str[3 * N];
long long num[N]; long long caculate_max (int count) { long long temp[N];
for (int i = 0; i < count; i++)
temp[i] = num[i]; for (int i = count - 2; i >= 0; i--)
if (op[i] == '+') { temp[i] += temp[i + 1];
temp[i + 1] = temp[i];
} long long sum = temp[0];
for (int i = 0; i < count - 1; i++) { if (op[i] == '*')
sum *= temp[i + 1]; }
return sum;
} long long caculate_min (int count) { long long temp[N];
for (int i = 0; i < count; i++)
temp[i] = num[i]; for (int i = count - 2; i >= 0; i--) { if (op[i] == '*')
temp[i] = temp[i] * temp[i + 1];
} long long sum = temp[0];
for (int i = 0; i <= count - 2; i++) { if (op[i] == '+')
sum += temp[i + 1];
} return sum;
} int init () { int t = 0;
long long sum;
scanf ("%s", str);
for (int i = 0; i < strlen (str); i++) { if (str[i] == '+' || str[i] == '*')
op[t++] = str[i];
else { sum = 0;
while (str[i] >= '0' && str[i] <= '9') { sum = sum * 10 + str[i] - '0';
i++;
}
num[t] = sum;
i--;
}
}
return t + 1;
} int main () { int t;
int count;
scanf ("%d", &t);
while (t--) { count = init();
printf ("The maximum and minimum are %lld and %lld.\n", caculate_max(count), caculate_min(count)); }
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
uva:10700 - Camel trading(贪婪)的更多相关文章
- UVA 10700 Camel trading 无括号的表达式 贪心
题意:给出只包含数字和+*的表达式,你可以自己安排每一个运算的顺序,让你找出表达式可能得到的最大值和最小值. 很明显,先乘后加是最小值,先加后乘能得到最大值. 其实不是很明显... 证明下: 数字的范 ...
- UVa 10700 - Camel trading
题目大意:给一个不含括号.只有+和*运算的表达式,数字的范围在1到20之间,算出计算结果的可能最大值和最小值. 贪心,如果加法优先级比乘法高,那么得出的结果为最大值.(a+b)*c = a*c + b ...
- UVA 11054 Wine trading in Gergovia 葡萄酒交易 贪心+模拟
题意:一题街道上很多酒店,交易葡萄酒,正数为卖出葡萄酒,负数为需要葡萄酒,总需求量和总售出量是相等的,从一家店到另外一家店需要路费(路费=距离×运算量),假设每家店线性排列且相邻两店之间距离都是1,求 ...
- uva 11054 wine trading in gergovia (归纳【好吧这是我自己起的名字】)——yhx
As you may know from the comic \Asterix and the Chieftain's Shield", Gergovia consists of one s ...
- UVa 11054 Wine trading in Gergovia【贪心】
题意:给出n个等距离的村庄,每个村庄要么买酒,要么卖酒,买酒和卖酒的总量相等, 把k个单位的酒从一个村庄运送到相邻的村庄,需要耗费k个单位劳动力,问怎样运送酒使得耗费的劳动力最少 买 卖 ...
- UVa 11054 Wine trading in Gergovia
题意: 直线上有n个等距的酒庄,每个酒庄对酒的需求量为ai(正数说明需要买酒,负数需要卖酒),而且保证所有的酒庄供需平衡. 搬运x个单位的酒到相邻的酒庄需要x个劳动力,求要使所有酒庄供需平衡最少需要多 ...
- UVA 11054 Wine trading in Gergovia(思维)
题目链接: https://vjudge.net/problem/UVA-11054 /* 问题 输入村庄的个数n(2=<n<=100000)和n个村庄的数值,正代表买酒,负代表卖酒,k个 ...
- UVA10700:Camel trading(栈和队列)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/J 题目大意: 给一个没有加上括号的表达式且只有+ , ...
- UVA - 11054 Wine trading in Gergovia 扫描法
题目:点击打开题目链接 思路:考虑第一个村庄,如果第一个村庄需要买酒,那么a1>0,那么一定有劳动力从第二个村庄向第一个村庄搬酒,这些酒可能是第二个村庄生产的,也可能是从其他村庄搬过来的,但这一 ...
随机推荐
- 手动配置S2SH三大框架报错(一)
十二月 08, 2013 9:24:51 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...
- MFC消息响应机制分析
---- 摘要: ---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析 ...
- CURD演示 2
<?php class UserAction extends Action{ public function index(){ echo "你好!"; $m=M('user' ...
- Android应用开发学习笔记之绘图
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 一.绘图常用类介绍 在Android中绘图时,常用到的几个类是Paint.Canvas.Bitmap和Bitmapt ...
- typedef和define具体的具体差别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,仅仅有在编译已被展开的源程序时才会发现可能的错误并报错.比如: #define PI 3. ...
- uva Matrix Decompressing (行列模型)
Matrix Decompressing 题目: 给出一个矩阵的前i行,前j列的和.要求你求出满足的矩阵. 矩阵的数范围在[1,20]. 一開始就坑在了这里.没读细致题目. 囧... 事 ...
- Delphi xe7并行编程快速入门(三篇)
现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...
- 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控
原文:与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触 ...
- kiss框架学习
#parse("$!jc.skinpath/exam/cart.ascx") var CategoryId = "$!this.loadCategory_combo(). ...
- 初步掌握Yarn的架构及原理(转)
1.YARN 是什么? 从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapReduce的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性, ...