CCF-CSP题解 201912-3化学方程式

本文介绍了如何进行化学方程式的配平检验,作者分享了在CCF CSP考试中遇到的问题及解决过程。利用unordered_map存储元素信息,stringstream处理字符串,实现了配平检验功能。此外,还根据建议减少了class的使用,增加了对嵌套括号的判断,并附有运行截图验证结果。
摘要由CSDN通过智能技术生成

化学方程式的配平检验

第一次去考,有些紧张,第三题本来很简单的,愣是没写出来,放假了有空写了写,自我感觉可读性还可以。
因为ccf官网上还没有开放模拟,我就自己写了个.txt文件检验一下,基本要求都满足了。
主要用了unordered_map作为元素记录,stringstream作为字符串分割工具。

提示

经过大佬提示,尽量用面向过程的思想,少用class。

更新

增加了嵌套括号的判断(增加了一个vector数组,记录每层括号外的数字)运行截图如下:
在这里插入图片描述

#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>

using namespace std;

class elements{
   
private:
    unordered_map<string, int> record;  // 记录元素个数
    vector<int> stack;  // 记录嵌套括号外的数字

    bool islower(char& c){
   
        return c >= 'a' && c <= 'z';
    }
    bool isdigit(char& c){
   
        return c >= '0' && c <= '9';
    }
public:
    elements(vector<string> words){
   
        stack.push_back(1);

        int times = 1;  // 记录当前的元素需要乘的倍数
        // int outsideNum = 1;  // 括号外的数字(现改为局部变量)
        int inside = 0;  // 记录括号嵌套的层次
        int totalNum = 0; // 化学式的系数
        for(auto word : words){
   
            for(int i = 0; i < word.size() && 
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值