HDU - 3347 Calculate the expression — 模拟 + map存变量
题意:从输入开始,1.输入样例数;2.然后输入一组样例中的行数n;3.前n-1行为定义变量(之间使用空格隔开),只需要map存进去就可以了(这里有覆盖的情况,故使用mp["s"] = "***"的方法赋值,因为insert的方法如果里面存在的话,插不进入数值);4.然后就是最后一行输入计算式子(之间使用空格隔开)。
思路:我使用的字符流的方法分割的的字符串,因为题中说了使用空格隔开的;
变量的储存使用map就可以,在最后一行输入计算式子之后,同样使用字符流分割的方法,分割出来,判断是加法、减法、变量、数 字(正负)。 我做的时候就是以为都是加法,所以WA了一次。
1 #include <iostream>
2 #include <algorithm>
3 #include <sstream>
4 #include <string>
5 #include <vector>
6 #include <queue>
7 #include <map>
8
9 #include <cstdio>
10 #include <cstring>
11 #include <cmath>
12 using namespace std;
13
14 // 讲字符串转换为数字(这里的函数名起得不合适)
15 long long asksum(string str, int s) {
16 int len = str.length();
17 long long sum = 0;
18 for (int i = s; i < len; ++i) {
19 sum = sum*10+(str[i]-'0');
20 // cout << "qwe" << endl;
21 }
22 // cout << sum << "+++++" << endl;
23 if (s)
24 return sum*-1;
25 return sum;
26 }
27
28 int main() {
29 // ios::sync_with_stdio(false);
30 // cin.tie(NULL);
31 // cout.tie(NULL);
32
33 int t, n;
34 string str, s;
35 map<string, int> mp;
36 // 储存变量
37 cin >> t;
38 while (t--) {
39 cin >> n;
40 getchar();
41 mp.clear();
42 // 每一次清空上一次残留的变量
43 long long sum = 0;
44 for (int i = 0; i < n; ++i) {
45 getline(cin, str);
46 if (i == n-1) { // 在输入计算式的时候直接出结果,也可以讲变量和计算式分开
47 int flag = 1;
48 // 这个flag就是用来标记是加法还是减法的。
49 stringstream ss(str);
50 while (ss >> s) {
51 if (s[0] >= '0' && s[0] <= '9') {
52 sum += asksum(s, 0)*flag;
53 // cout << "+" << endl;
54 } else if (s[0] == '-' && s[1] >= '0' && s[1] <= '9'){
55 sum += asksum(s, 1)*flag;
56 // cout << "-" << endl;
57 } else if (s == "+") {
58 flag = 1;
59 } else if (s == "-") {
60 flag = -1;
61 } else if (s[0] >= 'a' && s[0] <= 'z') {
62 sum += mp[s]*flag;
63 }
64 }
65 } else {
66 stringstream ss(str);
67 string var;
68 int num = 0, zhi;
69 while (ss >> s) {
70 num++;
71 // 因为变量赋值只有三部分,所以这里只需要去第一次和第三次即可
72 if (num == 1) {
73 var = s;
74 } else if (num == 3) {
75 if (s[0] == '-')
76 zhi = asksum(s, 1);
77 else
78 zhi = asksum(s, 0);
79 }
80 }
81 mp[var] = zhi;
82 }
83 // cout << mp.size() << " = size" << endl;
84 }
85 // cout << "sum = " << sum << endl;
86 cout << sum << endl;
87 }
88
89 return 0;
90 }
hdu 3347
关于字符串分流的知识点:字符串分割
HDU - 3347 Calculate the expression — 模拟 + map存变量的更多相关文章
- 组合数学第一发 hdu 2451 Simple Addition Expression
hdu 2451 Simple Addition Expression Problem Description A luxury yacht with 100 passengers on board ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- js模拟Map对象,实现key---value
js模拟Map对象,实现key---value 根据java中map的属性,实现key----value保存 function Map() { var struct = function (key, ...
- BZOJ 2157: 旅游 (结构体存变量)
用结构体存变量好像确实能提高运行速度,以后就这么写数据结构了 Code: #include <cstdio> #include <algorithm> #include < ...
- HDU 6342.Problem K. Expression in Memories-模拟-巴科斯范式填充 (2018 Multi-University Training Contest 4 1011)
6342.Problem K. Expression in Memories 这个题就是把?变成其他的使得多项式成立并且没有前导零 官方题解: 没意思,好想咸鱼,直接贴一篇别人的博客,写的很好,比我的 ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU 5873 Football Games 【模拟】 (2016 ACM/ICPC Asia Regional Dalian Online)
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 4814 Golden Radio Base 模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4814 题目大意: 把一个正整数表示为φ进制, φ = (1+√5)/2 . 且已知: 1. φ + 1 ...
随机推荐
- P1177【模板】快速排序(JAVA语言)
import java.util.Scanner; import java.util.ArrayList; import java.util.Collections; import java.util ...
- 攻防世界 reverse reverse-for-the-holy-grail-350
reverse-for-the-holy-grail-350 tu-ctf-2016 程序流程很简单,就一个检验函数: 1 __int64 __fastcall stringMod(__int64 ...
- Java程序中的代理作用和应用场景及实现
body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...
- 计算机体系结构——CH4 输入输出系统
计算机体系结构--CH4 输入输出系统 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH4 输入输出系统 输入输出原理 特点 实时性 与设备无关性 异步性 输入输出系统的组织方式 ...
- [2020年10月28日普级组]1408.MSWORLD
1408. M S W O R L D 1408.MSWORLD 1408.MSWORLD 题目描述 Bessie , Farmer John 的优选牛,刚刚获得了一个牛科动物选美比赛的冠军!并得到了 ...
- 201871030122-牛建疆 实验三 结对项目——《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 班级博客链接 作业要求链接 作业要求链接 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming).(2)掌握Github协 ...
- CIE标准色度系统(上)
一.颜色匹配 为了满足工业生产对颜色特性的定量化和标准化的需要,由国际照明委员会(CIE)的协调和指导下,先后提出CIE1931和CIE1964标准色度观察者光谱三刺激值,由此奠定了现代色度学基础. ...
- 【Java并发】1. Java线程内存模型JMM及volatile相关知识
Java招聘知识合集:https://www.cnblogs.com/spzmmd/tag/Java招聘知识合集/ 该系列用于汇集Java招聘需要的知识点 JMM 并发编程的三大特性:可见性(vola ...
- CPF 入门教程 - 控件布局(六)
CPF netcore跨平台桌面UI框架 系列教程 CPF 入门教程(一) CPF 入门教程 - 数据绑定和命令绑定(二) CPF 入门教程 - 样式和动画(三) CPF 入门教程 - 绘图(四) C ...
- Jenkins 自定义构建结果
1. Jenkins 构建原理 2. 脚本执行失败立即停止执行 3. 脚本执行失败继续后面的执行但最终的结果是构建失败 1. Jenkins 构建原理 Jenkins 的构建成功和脚本执行成功是两个事 ...