题目: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(贪婪)的更多相关文章

  1. UVA 10700 Camel trading 无括号的表达式 贪心

    题意:给出只包含数字和+*的表达式,你可以自己安排每一个运算的顺序,让你找出表达式可能得到的最大值和最小值. 很明显,先乘后加是最小值,先加后乘能得到最大值. 其实不是很明显... 证明下: 数字的范 ...

  2. UVa 10700 - Camel trading

    题目大意:给一个不含括号.只有+和*运算的表达式,数字的范围在1到20之间,算出计算结果的可能最大值和最小值. 贪心,如果加法优先级比乘法高,那么得出的结果为最大值.(a+b)*c = a*c + b ...

  3. UVA 11054 Wine trading in Gergovia 葡萄酒交易 贪心+模拟

    题意:一题街道上很多酒店,交易葡萄酒,正数为卖出葡萄酒,负数为需要葡萄酒,总需求量和总售出量是相等的,从一家店到另外一家店需要路费(路费=距离×运算量),假设每家店线性排列且相邻两店之间距离都是1,求 ...

  4. 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 ...

  5. UVa 11054 Wine trading in Gergovia【贪心】

    题意:给出n个等距离的村庄,每个村庄要么买酒,要么卖酒,买酒和卖酒的总量相等, 把k个单位的酒从一个村庄运送到相邻的村庄,需要耗费k个单位劳动力,问怎样运送酒使得耗费的劳动力最少 买     卖    ...

  6. UVa 11054 Wine trading in Gergovia

    题意: 直线上有n个等距的酒庄,每个酒庄对酒的需求量为ai(正数说明需要买酒,负数需要卖酒),而且保证所有的酒庄供需平衡. 搬运x个单位的酒到相邻的酒庄需要x个劳动力,求要使所有酒庄供需平衡最少需要多 ...

  7. UVA 11054 Wine trading in Gergovia(思维)

    题目链接: https://vjudge.net/problem/UVA-11054 /* 问题 输入村庄的个数n(2=<n<=100000)和n个村庄的数值,正代表买酒,负代表卖酒,k个 ...

  8. UVA10700:Camel trading(栈和队列)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/J 题目大意: 给一个没有加上括号的表达式且只有+ , ...

  9. UVA - 11054 Wine trading in Gergovia 扫描法

    题目:点击打开题目链接 思路:考虑第一个村庄,如果第一个村庄需要买酒,那么a1>0,那么一定有劳动力从第二个村庄向第一个村庄搬酒,这些酒可能是第二个村庄生产的,也可能是从其他村庄搬过来的,但这一 ...

随机推荐

  1. UVA 529 Addition Chains(迭代搜索)

      Addition Chains  An addition chain for n is an integer sequence  with the following four propertie ...

  2. 制作openstack用的centos6.5镜像

    目的: 在centos6.5操作系统环境下制作一个centos6.5的kvm镜像,安装cloud-init,能自己主动扩展根分区 一.制作环境: 操作环境是在openstack平台开一个实例.装的是c ...

  3. flex中在basewidget中不能使用图表组件问题

    参考 http://blog.sina.com.cn/s/blog_51e3d0e70101hljz.html

  4. 判断指定进程是否为x64的方法(在ntdll判断某个x64函数是否存在)

    BOOL IsWow64ProcessEx(HANDLE hProcess) { // 如果系统是x86的,那么进程就不可能有x64 bool isX86 = false; #ifndef _WIN6 ...

  5. 14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器

    14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器 这个章节描述技术关于移动或者copy ...

  6. 注解框架---AndroidAnnotations

    AndroidAnnotations是一个开源框架,旨在加快Android开发的效率.通过使用它开放出来的注解api,你差点儿可以使用在不论什么地方, 大大的降低了无关痛痒的代码量,让开发人员可以抽身 ...

  7. Makefile条件推断 ——————————【Badboy】

    使用条件推断,能够让make依据执行时的不同情况选择不同的执行分支. 条件表达式能够是比較变量的值,或是比較变量和常量的值. 一.演示样例 以下的样例,推断$(CC)变量是否"gcc&quo ...

  8. SQL中EXISTS的用法(转)

    比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FR ...

  9. C++自删除

    #pragma once class AutoRelease { public: AutoRelease(void){ m_count = 0; } virtual ~AutoRelease(void ...

  10. [Xcode]some little skill

    Date:2014-1-2 Summary: 自己在使用Xcode的一些小习惯,记录下来,我是这么用的,你呢? Contents:1.使用#warning 在工作中,难免需要做一些test,但是又怕忘 ...