uva10700- Camel trading
来源:互联网 发布:北京科瑞明软件招聘 编辑:程序博客网 时间:2024/04/30 20:28
Sample Input
3
1+2*3*4+5
4*18+14+7*10
3+11+4*1*13*12*8+3*3+8
Sample Output
The maximum and minimum are 81 and 30.
The maximum and minimum are 1560 and 156.
The maximum and minimum are 339768 and 5023.
题意:
如上,给你一个带‘+’和‘*’的表达式,求最大和最小值
思路:
最大值:先加后乘
最小值:先乘后加
因为 : (a+b)*c a+b*c
->a*c+b*c a+b*c
都是正整数,显然先加后乘更大。
代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 1005;char str[N];long long num[N];char op[N];int len, lop, lnum;void init() { lop = 0, lnum = 0; for (int i = 0; i < len;) { if (str[i] == '+' || str[i] == '*') { op[lop++] = str[i]; i++; } else { long long number = 0; while (str[i] >= '0'&&str[i] <= '9') { number = number * 10 + (str[i] - '0'); i++; } num[lnum++] = number; } } /*for (int i = 0; i < lop; i++) printf("%c\t", op[i]); printf("\n"); for (int i = 0; i < lnum; i++) printf("%d\t", num[i]); printf("\n");*/}long long get_min() { long long temp[N]; long long minn = 0; for (int i = 0; i < lnum; i++) temp[i] = num[i]; for (int i = 0; i < lop; i++) { if (op[i] == '*') { temp[i + 1] *= temp[i]; temp[i] = 0; } } for (int i = 0; i < lnum; i++) { minn += temp[i]; } return minn;}long long get_max() { long long temp[N]; long long maxn = 1; for (int i = 0; i < lnum; i++) temp[i] = num[i]; for (int i = 0; i < lop; i++) { if (op[i] == '+') { temp[i + 1] += temp[i]; temp[i] = 0; } } for (int i = 0; i < lnum; i++) { if (temp[i] != 0) maxn *= temp[i]; } return maxn;}int main() { int cas; scanf("%d\n", &cas); while (cas--) { gets(str); len = strlen(str); init(); long long minn = get_min(); long long maxn = get_max(); printf("The maximum and minimum are %lld and %lld.\n", maxn, minn); } return 0;}
0 0
- uva10700- Camel trading
- [贪心&&栈模拟]uva10700 Camel trading
- uva10700 - Camel trading(无括号的表达式)
- uva 10700 Camel trading
- 10700 - Camel trading
- UVa 10700 - Camel trading
- uva 10700 - Camel trading
- uva 10700 - Camel trading
- UVA 10700 Camel trading
- Problem E - Camel trading
- 10700 - Camel trading
- UVaOJ10700 - Camel trading
- UVA 10700 - Camel trading
- UVa 10700 Camel trading
- uva 10700 Camel trading
- uva 10700 Camel trading
- uva 10700 Camel trading
- uva 10700 - Camel trading
- @autowired和@resource的区别(面试题)
- Effective C++ 学习心得——让自己习惯C++
- zookeeper初探(一)
- NavicatPremium数据库访问
- Android中如何实现文件下载
- uva10700- Camel trading
- Lowest Common Ancestor
- Androd自定义控件(一)概述
- SEO基础_审计已有网站_要审计的元素
- android studio怎么生成HttpClient
- Linux下性能分析工具和内存泄露检测工具的简介(Valgrind和gprof)
- Java 中的引用
- 为什么需要NOSQL
- FFmpeg获取视频的旋转角度rotate函数,一定能获取!(要放在解析视频流的时候才能获取)