遇到一个运算符,就把之前优先级equalorgreaterthanequalorgreaterthan它的运算符处理掉。 #include<bits/stdc++.h>usingnamespacestd;intoperation(intnum1,charop,intnum2){if(op =='+')returnnum1 + num2;elseif(op =='-')returnnum1 - num2;elseif(op =='x')returnnum1 * num2;elsereturnnum1 ...
题目背景 二十四点是一款著名的纸牌游戏,其游戏的目标是使用3个加减乘除运算使得4张纸牌上的运算结果为24。 题目描述 定义每一个游戏由4个从1-9的数字和3个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号和其他字符,运算顺序按照四则运算顺序进行。其中加分用
int get_num(string str, int &k) { // 从k开始一直读所有的数字字符 int ans = 0;//记录数值 char chh = str[k];//记录第一个字符,后面判断是否是负号 if (str[k] >= '0' && str[k] <= '9') ans = ans * 10 + str[k] - '0'; k++; for (; k < str.size(); k++) { i...
string str = ""; int arr[3] = {0, 0, 0};//记录运算符的,加减乘除,对应1,2,3,4 a = get_num(s, k); arr[0] = s[k]; b = get_num(s, k); arr[1] = s[k]; c = get_num(s, k); arr[2] = s[k]; d = get_num(s, k); return str; } 此路不通 最后对应的去...
2 思路 1 根据题目分别读入数字和符号存储在数组中; 2 根据符号,来讨论计算的优先级; 当第一个符号为+,-,第二个符号为x/时,优先计算第二个数和第三数的运算,得到结果ans 当第三个符号为x/时,优先计算ans和第四个数的运算 否则按照先后顺序计算 ...
CCF201903-2二十四点 思路描述:最开始的思路是拿一个栈来存储数据和符号,在动手实践的过程中发现行不通,单个数字的char和int转换可以,但是加起来的数据两位数字就很难处理了。 然后就去看了看别人的思路,给了我一个很好的启发就是把数据和符号分开存储,但是在处理减号时思路再次打乱,突然就想到了双端队列!
CCF201903-2二十四点 思路描述:最开始的思路是拿一个栈来存储数据和符号,在动手实践的过程中发现行不通,单个数字的char和int转换可以,但是加起来的数据两位数字就很难处理了。 然后就去看了看别人的思路,给了我一个很好的启发就是把数据和符号分开存储,但是在处理减号时思路再次打乱,突然就想到了双端队列!
CCF 201903-2 二十四点 #include <iostream> #include <bits/stdc++.h> #include <string> using namespace std; int main() { int n; cin>>n; stack <char> oper;//运算符 stack <int> number;//操作数 while(n--) { int end; string temp; cin>>temp; for(int i=0; i<(int)temp.size...
CCF: 201903-2 二十四点,#include<bits/stdc++.h>usingnamespacestd;stack<int>num;//放数字即乘除的结果stack<char>op;//放加减号intmain(){intn;charstr[10];scanf("%d",&n);getchar();//过滤回车for(inti=0;i...
点击查看代码 Copy #include<iostream>usingnamespacestd;intmain(){intn; cin >> n;inta[4];//建立两个数组,分别存放四个数字和三个运算符charb[3];while(n--) { cin >> a[0]>>b[0] >> a[1] >> b[1] >> a[2] >> b[2] >> a[3];intans =0;for(inti =0; i <3;i++) ...