嘘~ 正在从服务器偷取页面 . . .

CCF画图---一个平平无奇的搜索题bfs


CCF-201512-3

下面都不会了

我们先来看一下题目吧

1
2

解题思路

就是一个很平常的搜索题
1.我们要完成画线和填充,把他简化为两个函数再一一击破

注意点:

1.x1不一定大于x2,y1不一定大于y2,所以还要处理一下输入数据
2.输出格式还要y其实相当于i

代码

#include<iostream>
#include<cstring>
#define mm(a,b) memset(a,b,sizeof(a))
using namespace std;
const int maxn=100;
char map[maxn][maxn];
int x_dir[4]={0,0,-1,1};
int y_dir[4]={1,-1,0,0};
int m,n;
void line(int x1,int y1,int x2,int y2){
    if(x1==x2){//|
      if(y1>y2){
          int temp=y1;
          y1=y2;
          y2=temp;
      }
      for(int i=y1;i<=y2;i++){
          if(map[i][x1]=='+'||map[i][x1]=='-')
            map[i][x1]='+';
          else
            map[i][x1]='|';
      }
    }
    if(y1==y2){//-
      if(x1>x2){
          int temp=x1;
          x1=x2;
          x2=temp;
      }
      for(int i=x1;i<=x2;i++){
          if(map[y1][i]=='+'||map[y1][i]=='|')
            map[y1][i]='+';
          else
            map[y1][i]='-';
      }
    }
}
void fill(int x,int y,char c){
    map[y][x]=c;
    for(int i=0;i<4;i++){
      int nx=x+x_dir[i];
      int ny=y+y_dir[i];
      if(nx<0||nx>=m||ny<0||ny>=n) continue;
      if(map[ny][nx]!='-'&&map[ny][nx]!='|'&&map[ny][nx]!='+'&&map[ny][nx]!=c)
          fill(nx,ny,c); 
    }
}
int main(){
    int q;
    cin>>m>>n>>q;
    mm(map,'.');
    while(q--){
      int flag;
      cin>>flag;
      if(flag){
          int x,y;
          char c;
          cin>>x>>y>>c;
          fill(x,y,c);
      }else{
          int x1,x2,y1,y2;
          cin>>x1>>y1>>x2>>y2;
          line(x1,y1,x2,y2);
      }
    }
    for(int i=n-1;i>=0;i--){
      for(int j=0;j<m;j++){
          cout<<map[i][j];
      }
      cout<<endl;
    }
    return 0;
}

结果


版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梦想成为假面骑士的司祎同学 !
赏
评论
评论
 上一篇
CCF路径解析---String::find()&&erase() CCF路径解析---String::find()&&erase()
CCF-201604-3 让我们先来看一下题目 解题思路1.看到这种文本字符处理的题,肯定烦躁,这个简单看着都烦;2.先冷静下来,分析需求;3.输入后,先处理空串和相对路径(+path);4.一个一个点来消除,先是多余的/,再是/./然后是
2020-09-05
下一篇 
CCF模板生成系统---字符串都有替身了,木大木大木大! CCF模板生成系统---字符串都有替身了,木大木大木大!
CCF-201509-3 让我们先来看一下题目 解题思路1.替换的字符用map存储;2.提取字符用到了substr;3.替换用到了replace,find等函数; 注意点1.substr的第一个参数是提取字符串的首字母下标i,第二个参数是字
2020-09-05
  目录