#include <iostream>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <cstring>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
#include <chrono>
#include <ctime>
#include <cmath>
#include <cctype>
#include <string>
#include <cstdio>
#include <iomanip>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <iterator>
using namespace std;
const int ROW = 22,COL = 12;
int n, m,matrix[ROW][COL],vis[ROW][10];
char sm[ROW][COL][128];
int ReadInt(const char *str, int &len) {
int ret = 0,base = 1;
while (str[len] && isdigit(str[len])) {
ret = ret * 10 + (str[len++] - '0');
}
return ret;
}
bool dfs(int i, int j) {
int& o = vis[i][j];
if (o == 1) return true;
else if (o == -1) return false;
o = -1;
char * temp = sm[i][j];
int &ret = matrix[i][j],sign = 1,size = strlen(temp);
ret = 0;
for (int k = 0; k < size; k++) {
if (temp[k] == '+') sign = 1;
else if (temp[k] == '-') sign = -1;
else if (isdigit(temp[k])) {
int len = 0;
int base = ReadInt(temp + k, len);
ret += sign * base;
sign = 1;
k += len-1;
}
else if(isupper(temp[k])){
int row = temp[k] - 'A', len = 0,col = ReadInt(temp + k + 1, len);
if (dfs(row, col) == false) { o = 0; return false;}
k += len;
ret += sign * matrix[row][col];
sign = 1;
}
}
o = 1;
return true;
}
int main()
{
while (cin >> n >> m && n && m) {
bool isfind = false;
memset(vis, 0, sizeof(vis));
memset(matrix, 0, sizeof(matrix));
memset(sm, 0, sizeof(sm));
for (int i = 0;i<n;i++)
for (int j = 0; j < m; j++) {
cin >> sm[i][j];
}
for(int i = 0;i<n;i++)
for (int j = 0; j < m; j++) {
if (!dfs(i, j)) {
isfind = true;
char a = 'A' + i, b = '0' + j;
cout << a << b << ": " << sm[i][j] << endl;
}
}
if (!isfind)
{
cout << " ";
for (int i = 0; i < m; i++) {
cout << setw(6) << i;
}
cout << endl;
for (int i = 0; i < n; i++) {
char a = 'A' + i;
cout << a;
for (int j = 0; j < m; j++) {
cout << setw(6) << matrix[i][j];
}
cout << endl;
}
}
cout << endl;
}
return 0;
}
习题6-13(uva-215)
最新推荐文章于 2021-04-05 14:15:13 发布