当前位置: 首页 > article >正文

化学方程式配平 第33次CCF-CSP计算机软件能力认证

很经典的大模拟题目 但是还不算难 大模拟题最需要注意的就是细节

写代码一定要考虑全面 并且要细心多debug 多打断点+STL库的熟练使用

istringstream真的处理字符串非常好用

注意解耦合思想 这样改代码debug更加清晰

https://www.acwing.com/problem/content/5724/

#include<bits/stdc++.h>
using namespace std;
#define THRESHOLD 1e-5  // 设置阈值为 1e-5
//给定方程式 思考是否可以配平0
//使用矩阵 元素个数*化合物个数
int n;
//得到化学反应方程式
vector<vector<int>> get_matrix(istringstream& iss) {map<int, map<string,int>> elements;//elements[数字][元素]=第几个化合物的元素的个数set<string> ee;//元素个数int m;//化合物个数iss >> m;//化合物个数for (int i = 0; i < m; i++) {string material;//每一个化合物iss >> material;string ss;//暂存元素for (int j = 0; j < material.size(); j++) {if (material[j] >= 'a' && material[j] <= 'z') {ss += material[j];}else {//是数字int num = material[j] - '0';while ((j + 1) < material.size() && material[j + 1] >= '0' && material[j + 1] <= '9') {num = num * 10 + (material[j + 1] - '0');j++;}elements[i][ss] += num;ee.insert(ss);ss = "";}}}//给元素排序vector<string> eee = vector<string>(ee.begin(), ee.end());//元素个数*化合物个数vector<vector<int>> matrix(eee.size(), vector<int>(m, 0));for (int i = 0; i < ee.size(); i++) {for (int j = 0; j < m; j++) {matrix[i][j] = elements[j][eee[i]];}}return matrix;
}vector<vector<double>> get_gauss_matrix(vector<vector<int>> matrix) {vector<vector<double>> double_matrix;for (const auto& row : matrix) {vector<double> new_row;for (int val : row) {new_row.push_back(static_cast<double>(val));}double_matrix.push_back(new_row);}int i = 0, j = 0;//(i,j)代表 当前矩阵左上角起始位置while (i < double_matrix.size() && j < double_matrix[0].size()) {int flag = 1;for (int k = i; k < double_matrix.size(); k++) {if (double_matrix[k][j] != 0) {flag = 0;break;}}//对子矩阵进行重复if (flag == 1) { j++; continue; }//否则else {if (double_matrix[i][j] == 0) {for (int k = i + 1; k < double_matrix.size(); k++) {if (double_matrix[k][j] != 0) {swap(double_matrix[i], double_matrix[k]);break;}}//pprint(double_matrix); cout << endl;}//遍历剩下所有行for (int k = i + 1; k < double_matrix.size(); k++) {double mul = double_matrix[k][j] / double_matrix[i][j];for (int z = j; z < double_matrix[0].size(); z++) {double_matrix[k][z] -= mul * double_matrix[i][z];}}}i++; j++;// 遍历矩阵并将小于阈值的元素设为0for (int i = 0; i < double_matrix.size(); ++i) {for (int j = 0; j < double_matrix[0].size(); ++j) {if (abs(double_matrix[i][j]) < THRESHOLD) {double_matrix[i][j] = 0;}}}}return double_matrix;
}
string judge(vector<vector<double>> gauss_matrix) {int num = gauss_matrix[0].size();//变量个数;int rank = 0;int flag = 1;for (int i = 0; i < gauss_matrix.size(); i++) {for (int j = 0; j < gauss_matrix[i].size(); j++) {//如果有非0的flag变成0if (gauss_matrix[i][j] != 0) {flag = 0;break;}        }if (flag == 1) {break;}else {rank++;flag = 1;}}if (rank < num) return "Y";return "N";
}
string solve(istringstream &iss) {vector<vector<int>> matrix=get_matrix(iss);//化学反应方程式vector<vector<double>> gauss_matrix = get_gauss_matrix(matrix);//获得高斯消元的行阶梯形式return judge(gauss_matrix);
}int main() {cin >> n;cin.ignore();  // 忽略换行符while (n--) {string s;getline(cin, s);istringstream iss(s);cout << solve(iss)<<endl;}return 0;
}

相关文章:

化学方程式配平 第33次CCF-CSP计算机软件能力认证

很经典的大模拟题目 但是还不算难 大模拟题最需要注意的就是细节 写代码一定要考虑全面 并且要细心多debug 多打断点STL库的熟练使用 istringstream真的处理字符串非常好用 注意解耦合思想 这样改代码debug更加清晰 https://www.acwing.com/problem/content/5724/ #includ…...

Java基础-25-继承-方法重写-子类构造器的特点-构造器this的调用

在面向对象编程中&#xff0c;继承是实现代码复用和扩展的重要机制。通过继承&#xff0c;子类可以继承父类的属性和方法&#xff0c;并且可以通过方法重写来改变或扩展父类的行为。此外&#xff0c;构造器在对象初始化过程中扮演了重要角色&#xff0c;尤其是在子类构造器中如…...

nvidia 各 GPU 架构匹配的 CUDA arch 和 CUDA gencode

使用 NVCC 进行编译 cuda c(.cu)时&#xff0c;arch 标志 (-arch) 指定了 CUDA 文件将为其编译的 NVIDIA GPU 架构的名称。 Gencodes (-gencode) 允许更多的 PTX 代&#xff0c;并且可以针对不同的架构重复多次。 NVIDIA 架构名称的列表&#xff0c;以及它们具有的计算能力&am…...

沉浸式体验测评|AI Ville:我在Web3小镇“生活”了一周

最近&#xff0c;我在朋友的推荐下&#xff0c;体验了 aivillebot 的项目。起初&#xff0c;我只是抱着试试看的心态&#xff0c;心想这不就是个 Web3 版的《星露谷物语》吗&#xff1f; 但是一周下来&#xff0c;我发现这个虚拟小镇也没那么简单——里面的居民不是目前端游或链…...

TTL 值 | 在 IP 协议、ping 工具及 DNS 解析中的作用

注&#xff1a;本文为 “TTL” 相关文章合辑。 未整理去重。 如有内容异常&#xff0c;请看原文。 TTL 值的意义 2007-10-18 11:33:17 TTL 是 IP 协议包中的一个值&#xff0c;用于标识网络路由器是否应丢弃在网络中停留时间过长的数据包。数据包可能因多种原因在一定时间内…...

人工智能之数学基础:初等反射阵

本文重点 在线性代数中,初等反射阵(Householder矩阵)作为一类特殊的正交矩阵,在矩阵变换、特征值计算及几何变换等领域具有广泛应用。其简洁的构造方式和丰富的数学性质,使其成为数值分析和几何处理中的重要工具。 什么是初等反射阵(豪斯霍尔德变换) I为单位矩阵,wwT…...

4.1 代码随想录第三十二天打卡

准备:完全背包理论基础-二维DP数组 1.完全背包就是同一物品可以往里多次装 2.这里先遍历背包 或物品都可以 3.dp[i][j] 表示从下标为[0-i]的物品&#xff0c;每个物品可以取无限次&#xff0c;放进容量为j的背包&#xff0c;价值总和最大是多少 518.零钱兑换II (1)题目描述…...

SQL Server:数据库镜像端点检查

目录标题 **1. 端点的作用****2. 检查的主要内容****&#xff08;1&#xff09;端点是否存在****&#xff08;2&#xff09;端点状态****&#xff08;3&#xff09;协议与端口****&#xff08;4&#xff09;权限配置** **3. 操作步骤&#xff08;示例&#xff09;****&#xff…...

【区块链安全 | 第九篇】基于Heimdall设计的智能合约反编译项目

文章目录 背景目的安装1、安装 Rust2、克隆 heimdall-dec3、编译 heimdall-dec4、运行 heimdall-dec 使用说明1、访问 Web 界面2、输入合约信息3、查看反编译结果 实战演示1、解析普通合约2、解析代理合约 背景 在区块链安全研究中&#xff0c;智能合约的审计和分析至关重要。…...

【Easylive】TokenUserInfoDto中@JsonIgnoreProperties和 Serializable 接口作用

【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 这段代码定义了一个名为 TokenUserInfoDto 的 DTO&#xff08;数据传输对象&#xff09;&#xff0c;用于封装用户令牌信息。以下是对 JsonIgnoreProperties 和 Serializable 接口作用的详…...

k8s EmptyDir(空目录)详解

1. 定义与特性 emptyDir 是 Kubernetes 中一种临时存储卷类型&#xff0c;其生命周期与 Pod 完全绑定。当 Pod 被创建时&#xff0c;emptyDir 会在节点上生成一个空目录&#xff1b;当 Pod 被删除时&#xff0c;该目录及其数据会被永久清除。它主要用于同一 Pod 内多个容器间的…...

毕业设计:实现一个基于Python、Flask和OpenCV的人脸打卡Web系统(六)

毕业设计:实现一个基于Python、Flask和OpenCV的人脸打卡Web系统(六) Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,…...

洛谷题单2-P5717 【深基3.习8】三角形分类-python-流程图重构

题目描述 给出三条线段 a , b , c a,b,c a,b,c 的长度&#xff0c;均是不大于 10000 10000 10000 的正整数。打算把这三条线段拼成一个三角形&#xff0c;它可以是什么三角形呢&#xff1f; 如果三条线段不能组成一个三角形&#xff0c;输出Not triangle&#xff1b;如果是…...

批量删除 txt/html/json/xml/csv 等文本文件空白行

我们常常会遇到需要删除 txt 文本文件中空白行的情况&#xff0c;如果文本文件较大&#xff0c;行数较多的时候&#xff0c;有些空白行不容易人工识别&#xff0c;这使得删除文本文件空白行变得非常繁琐&#xff0c;我们需要先找到空白的行&#xff0c;然后才能进行删除操作。尤…...

MySQL数据库中,tinyint(1) 和 tinyint 有什么区别

TINYINT(1) 和 TINYINT 的区别 在 MySQL 中&#xff0c;TINYINT(1) 和 TINYINT 本质上是相同的数据类型&#xff0c;但 TINYINT(1) 中的 (1) 实际上不会影响存储大小或取值范围。 1. TINYINT 及其取值范围 TINYINT 是 MySQL 中最小的整数类型&#xff0c;占用 1 个字节 (8 bi…...

android databinding使用教程

Android DataBinding 是一种可以将 UI 组件与数据源绑定的框架&#xff0c;能够减少 findViewById 的使用&#xff0c;并提高代码的可维护性。下面是 DataBinding 的完整使用教程&#xff1a; 1. 启用 DataBinding 在 build.gradle&#xff08;Module 级别&#xff09;中启用 …...

【FreeRtos】任务调度器可以被挂起吗?

1. 省流回答 FreeRTOS的任务调度器可以被挂起&#xff08;Suspend&#xff09;。 通过调用API函数 vTaskSuspendAll()&#xff0c;可以临时禁止任务调度器的运行&#xff0c;此时系统将不再进行任务切换&#xff08;包括抢占式调度和时间片轮转&#xff09;&#xff0c;但中断…...

ES5内容之String接口

注意&#xff1a;slice、substr、substring 都接受一个或两个参数&#xff0c;第一个参数指定字符串的开始位置&#xff0c;第二个参数表示子字符串到哪里结束&#xff0c;slice 和 substring 的第二个参数指定的是子字符串的最后一个字符后面的位置&#xff0c;substr 第二个参…...

k8s运维面试总结(持续更新)

一、你使用的promethues监控pod的哪些指标&#xff1f; CPU使用率 内存使用率 网络吞吐量 磁盘I/O 资源限制和配额&#xff1a;Prometheus可以监控Pod的资源请求和限制&#xff0c;确保它们符合预设的配额&#xff0c;防止资源过度使用。具体指标如container_spec_cpu_quota用于…...

中级:MyBatis面试题深度剖析

一、引言 在Java持久层技术中&#xff0c;MyBatis凭借其强大的映射功能和灵活的SQL编写方式&#xff0c;成为许多企业的首选。面试官通过MyBatis相关问题&#xff0c;考察候选人对框架核心组件的理解、配置管理能力以及在实际项目中解决问题的能力。本文将深入剖析MyBatis的配…...

Kubernetes高级应用(NFS存储)

一、介绍 在 **Kubernetes&#xff08;K8s&#xff09;** 中&#xff0c;**NFS&#xff08;Network File System&#xff09;存储** 是一种常见的 **持久化存储&#xff08;Persistent Storage&#xff09;** 解决方案&#xff0c;适用于需要共享存储、数据持久化或跨 Pod 访问…...

Mysql之事务(下)

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 5. 事务的隔离级别与并发控制 5.1事务的隔离级别 5.2查看与设置事务的…...

某地老旧房屋自动化监测项目

1. 项目简介 自从上个世纪90年代以来&#xff0c;我国经济发展迅猛&#xff0c;在此期间大量建筑平地而起&#xff0c;并且多为砖混结构的住房&#xff0c;使用寿命通常约为30-50年&#xff0c;钢筋混凝土结构&#xff0c;钢结构等高层建筑&#xff0c;这些建筑在一般情况下的…...

【QT】QT的多界面跳转以及界面之间传递参数

QT的多界面跳转以及界面之间传递参数 一、在QT工程中添加新的界面二、多界面跳转的两种情况1、A界面跳到B界面&#xff0c;不需要返回2、A界面跳到B界面&#xff0c;需要返回1&#xff09;使用this指针传递将当前界面地址传递给下一界面2&#xff09;使用parentWidget函数获取上…...

【学习笔记】计算机网络(五)

第5章 运输层 文章目录 第5章 运输层5.1 运输层协议概述5.1.1 进程之间的通信5.1.2 运输层的两个主要协议5.1.3 运输层的端口 5.2 用户数据报协议 UDP5.2.1 UDP 概述5.2.2 UDP的首部格式 5.3 传输控制协议 TCP 概述5.3.1 TCP 最主要的特点5.3.2 TCP 的连接 5.4 可靠传输的工作原…...

网络通信三大核心表项详解:MAC表、ARP表、路由表

网络通信三大核心表项详解&#xff1a;MAC表、ARP表、路由表 一、前言 在网络通信中&#xff0c;MAC地址表、ARP表和路由表构成了数据转发的"黄金三角"。作为新华三网络工程师&#xff0c;深入理解这三大表项的工作原理及相互关系&#xff0c;是排查网络故障和优化…...

鸿蒙NEXT小游戏开发:记忆翻牌

1. 引言 在本案例中&#xff0c;我们将使用鸿蒙NEXT框架开发一个简单的记忆翻牌游戏。该游戏的核心逻辑是玩家通过翻转卡片来寻找匹配的对。本文将详细介绍游戏的实现过程&#xff0c;包括卡片的展示、匹配逻辑以及用户交互。 2. 开发环境准备 电脑系统&#xff1a;windows 1…...

AI原生应用爆发:从通用大模型到垂直场景的算力重构

2025年第一季度&#xff0c;中国AI产业迎来标志性转折点&#xff1a;DeepSeek-R1大模型月活用户突破3000万&#xff0c;通义千问QwQ-32B在医疗领域诊断准确率达三甲医院主治医师水平&#xff0c;京东AI虚拟模特单日生成商品图超200万张……这些数据的背后&#xff0c;是AI技术从…...

Java常用工具算法-2--加密算法1--对称加密算法(推荐AES算法)

1、定义与核心原理 定义&#xff1a;加密和解密使用相同密钥的算法。工作流程&#xff1a; 秘钥协商&#xff1a;双方需提前通过安全信道共享密钥。加密过程&#xff1a;发送方用密钥对明文加密&#xff0c;生成密文。解密过程&#xff1a;接收方用相同密钥对密文解密&#xf…...

RK3588使用笔记:导出做好的文件系统

一、前言 初始镜像一般都比较空&#xff0c;当费劲八嘞的装了一堆环境之后&#xff0c;得知设备还要在做n套&#xff0c;想想每一套都要无穷的调试配置和在线更新一堆安装包&#xff0c;是不是脑壳痛&#xff0c;所以导出文件系统的功能就有需求了&#xff0c;本文介绍如何导出…...