CCF 201903-2 二十四点 C++实现 + python eval函数 实现

69 篇文章 2 订阅
10 篇文章 0 订阅

在这里插入图片描述
在这里插入图片描述

两种代码实现方式:

1.使用C++deque实现

#include<iostream>
#include<deque>

using namespace std;

int main() {
	int n;
	string str;
	cin >> n;
	while(n--){
		deque<char> ops;
		deque<int> nums;
		cin >> str;
		for (int i = 0; i < str.length(); i++) {
			char c = str[i];
			if (c <= '9' && c >= '0') {
				if (!ops.empty() && (ops.back() == 'x' || ops.back() == '/')) {
					char op = ops.back(); ops.pop_back();
					int num = nums.back(); nums.pop_back();
					if (op == 'x') nums.push_back(num * (c - '0'));
					else nums.push_back(num / (c - '0'));
				}
				else nums.push_back(c - '0');
			}
			else ops.push_back(c);
		}
		while (ops.size()) {
			int a = nums.front(); nums.pop_front();
			char op = ops.front(); ops.pop_front();
			int b = nums.front(); nums.pop_front();
			if (op == '-') nums.push_front(a - b);
			if (op == '+') nums.push_front(a + b);
		} 
		if (nums.front() == 24) cout << "Yes" << endl;
		else cout << "No" << endl;
	}
	return 0;
}

2. 使用eval函数实现

n = int(input())
while n != 0:
    n -= 1
    input_str = input()
    input_str = input_str.replace("x", "*")
    input_str = input_str.replace("/", "//")
    num = int(eval(input_str))
    if num == 24:
        print("Yes")
    else:
        print("No")

使用eval函数大大降低了难度,但由于eval函数权限过大,开发项目时不建议滥用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值