90分代码
#include <iostream>
#include<vector>
#include<string>
#include<map>
#include<algorithm>
using namespace std;
vector<vector<char>>first;
void ini(vector<vector<char>>& f,int m,int n) {
for (int i = 0;i < n ;i++) {
vector<char> cur;
for (int j = 0;j < m;j++) {
cur.push_back('.');
}
f.push_back(cur);
}
}
int m, n, q;
void dfs(vector<vector<char>>& f, int x, int y,char ch) {
f[x][y] = ch;
if ((x - 1) >= 0 && f[x - 1][y] != '-' && f[x - 1][y] != '+' && f[x - 1][y] != ch && f[x - 1][y] != '|')
dfs(f, x - 1, y, ch);
if ((x + 1) < n && f[x +1][y] != '-' && f[x + 1][y] != '+' && f[x + 1][y] != ch && f[x + 1][y] != '|')
dfs(f, x + 1, y, ch);
if ((y - 1) >= 0 && f[x][y-1] != '-' && f[x][y-1] != '+' && f[x][y-1] != ch && f[x][y - 1] != '|')
dfs(f, x, y - 1, ch);
if ((y + 1) < m && f[x][y+1] != '-' && f[x][y+1] != '+' && f[x][y+1] != ch && f[x][y + 1] != '|')
dfs(f, x, y + 1, ch);
}
bool isYTrue(vector<vector<char>>& f, int x, int y) {
if (x - 1 >= 0 && f[x - 1][y] == '|')
return true;
if (x + 1 < n && f[x + 1][y] == '|')
return true;
return false;
}
bool isXTrue(vector<vector<char>>& f, int x, int y) {
if (y - 1 >= 0 && f[x][y-1] == '-')
return true;
if (y + 1 < m && f[x][y+1] == '-')
return true;
return false;
}
int main()
{
cin >> m >> n >> q;
ini(first, m, n);
for (int i = 0;i < q;i++) {
int one;
cin >> one;
if (one == 1) {
int two, three;
char ch;
cin >> two >> three >> ch;
int x = n - 1 - three;
int y = two;
dfs(first, x, y,ch);
}
else {
int x1, y1,x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
int x1_ = n - 1 - y1;
int y1_ = x1;
int x2_ = n - 1 - y2;
int y2_ = x2;
if (x1_ == x2_) {
for (int k = min(y1_,y2_);k <= max(y1_,y2_);k++) {
if (isYTrue(first, x1_, k)) {
first[x1_][k] = '+';
}
else {
first[x1_][k] = '-';
}
}
}
if (y1_ == y2_) {
for (int k = min(x1_, x2_);k <= max(x1_, x2_);k++) {
if (isXTrue(first, k, y1_)) {
first[k][y1_] = '+';
}
else {
first[k][y1_] = '|';
}
}
}
}
}
for (int i = 0;i < n;i++) {
for (int j = 0;j < m;j++) {
cout << first[i][j];
}
cout << endl;
}
}