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

【化学方程式配平 / 3】

题目

代码

#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
unordered_map<string, int> e;
int eidx, midx; //eidx 元素数, midx 物质数
double matrix[45][45];
int q;
bool check_alpha(char c)
{if(c >= 'a' && c <= 'z') return true;return false;
}
bool gauss(int n, int m)
{//if(n < m) return false;int c, r, t;for(c = 1, r = 1; c <= m; c++){t = r;for(int i = r+1; i <= n; i++) //找主元{if(fabs(matrix[i][c]) > fabs(matrix[t][c])) t = i;}if(fabs(matrix[t][c]) < eps) continue;for(int i = c; i <= m+1; i++) //交换{swap(matrix[r][i], matrix[t][i]);}for(int i = m+1; i >= c; i--) //归一化{matrix[r][i] /= matrix[r][c];}for(int i = r+1; i <= n; i++) //上三角化{for(int j = m+1; j >= c; j--){matrix[i][j] -= matrix[i][c] * matrix[r][j];}}r++;}if((r-1) < m) return true;else return false;
}
int main()
{cin >> q;while (q -- ){memset(matrix, 0, sizeof matrix);e.clear();eidx = 0;cin >> midx;for(int i = 1; i <= midx; i++){string s;cin >> s;string name = "";for(int j = 0; s[j] != '\0'; j++){if(!check_alpha(s[j])){string num = "";num += s[j];while(s[++j] != '\0' && !check_alpha(s[j])){num += s[j];}j--;if(!e.count(name)) e[name] = ++eidx;matrix[e[name]][i] = stoi(num);name = "";}else name += s[j];}}if(gauss(eidx, midx)) cout << "Y" << endl;else cout << "N" << endl;}
}


http://www.mrgr.cn/news/15875.html

相关文章:

  • 笔记:应用Visual Studio Profiler分析CPU使用情况
  • Python数据分析的数据导入和导出
  • 「数组」二分查找模版|二段性分析|恢复二段性/ LeetCode 35|33|81(C++)
  • Python中的“break”与“continue”:控制循环的艺术
  • DDR test Tool for imx9
  • 【Python篇】Python 类和对象:详细讲解(上篇)
  • 生产环境中变态开启devtools(强制)
  • classA cla= ...; if(cla == nullptr) 这种写法是否安全
  • 远程教学必备神器:热门远程控制软件大盘点
  • Vue3.0教程001:Vue3简介
  • 一些零碎的关于合约测试,ERC20调用的知识
  • python基础(14内置函数介绍)
  • 第22周:调用Gensim库训练Word2Vec模型
  • 掌握SQL数据分割技巧:垂直与水平分割全解析
  • flume系列之:批量并行启动、停止、重启flume agent组
  • 【Linux】在 bash shell 环境下,当一命令正在执行时,按下 control-Z 会?
  • 【干货分享!】十五届蓝桥杯单片机国一经验分享
  • 【数学建模经验贴】数模的意义,并不只在于获奖,而在于历练!
  • union 的正确食用方法
  • 纯vue实现笔记系统