【问题描述】 给定一个 n × m 的矩阵表示 Excel 表格中的数据,行号从上到下按数字 1, 2, 3, · · · 编号,列号从左到右按大写字母 A, B,C, · · · 编号。一个单元格用列号 和行号相连表示。 例如,第 3 行第 5 列编号为 E3,第 20 行第 3 列编号为 C20 。 给定一个 Excel 中的加法公式,公式第一个字符一定为等号,后面只包含 单元格的名称和加号,且单元格名称不相邻,加号的两边都是单元格名称。请 计算加法的结果。 【输入格式】 输入的第一行包含两个整数 n, m ,用一个空格分隔。 接下来 n 行,每行 m 个整数,表示给定的数据。 接下来一行包含一个 Excel 中的加法公式。 【输出格式】 输出一行包含一个整数,表示答案。 【样例输入】 3 5 9 3 13 8 12 0 32 1 3 4 8 7 12 34 1 =A1+A2+C3+A1+E3 试题C: Excel计算 4第十六届蓝桥杯大赛软件赛省赛模拟(不是正式考题)C/C++ 大学 B 组 【样例输出】 31 【样例说明】 A1 + A2 + C3 + A1 + E3 = 9 + 0 + 12 + 9 + 1 = 31 。 【评测用例规模与约定】 对于所有评测用例,1 ≤ n ≤ 100 ,1 ≤ m ≤ 26 ,0 ≤ 表格中的数据 ≤ 10000 ,公式长度不超过 200 个字符。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
string s;
int a[105][30];
signed main()
{
ios::sync_with_stdio(false);cin.tie(0);
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >> a[i][j];
}
}
cin >> s;
int sum=0;
int i=1;
while(i<s.size()){
if(s[i]=='+'){
i++;
continue;
}
int col=s[i]-'A'+1;
i++;
int row=0;
while(i<s.size()&&s[i]!='+'){
row=row*10+(s[i]-'0');
i++;
}
sum+=a[row][col];
}
cout << sum;
return 0;
}
字符中的数字转化成数字要-‘0’;