所有的评测用例满足:2 ≤ m, n ≤ 100,0 ≤ q ≤ 100,0 ≤ x < m(x表示输入数据中所有位置的x坐标),0 ≤ y < n(y表示输入数据中所有位置的y坐标)。
#include <iostream> #include <math.h> using namespace std; int n,m,num; char map[105][105]; void fun_1(int a,int b,char c) { if(a<0||a==n||b<0||b==m||map[a][b]=='-'||map[a][b]=='|'||map[a][b]=='+'||map[a][b]==c) return ; map[a][b]=c; fun_1(a+1,b,c); fun_1(a-1,b,c); fun_1(a,b+1,c); fun_1(a,b-1,c); } void fun_2(int a,int b,int c,int d) { if(a==c) { if(d>b) { num=d-b+1; for(int k=b,i=0;i<num;i++,k++) { if(map[c][k]=='|'||map[c][k]=='+') map[c][k]='+'; else map[c][k]='-'; } } else { num=b-d+1; for(int k=d,i=0;i<num;i++,k++) { if(map[c][k]=='|'||map[c][k]=='+') map[c][k]='+'; else map[c][k]='-'; } } } else { if(a>c) { num=a-c+1; for(int k=c,i=0;i<num;i++,k++) { if(map[k][b]=='-'||map[k][b]=='+') map[k][b]='+'; else map[k][b]='|'; } } else { num=c-a+1; for(int k=a,i=0;i<num;i++,k++) { if(map[k][b]=='-'||map[k][b]=='+') map[k][b]='+'; else map[k][b]='|'; } } } } int main() { int t,sign; int a,b,c,d; char e; cin>>m>>n>>t; for(int i=0;i<n;i++) for(int j=0;j<m;j++) map[i][j]='.'; for(int i=0;i<t;i++) { cin>>sign; if(sign==1) { cin>>a>>b>>e; fun_1(n-b-1,a,e); } else { cin>>a>>b>>c>>d; fun_2(n-b-1,a,n-d-1,c); } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) cout<<map[i][j]; cout<<endl; } return 0; }