标签:style blog class code tar ext
描述
“ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。
图1 图2
已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点)。
1 5 5 100 253 214 146 120 123 0 0 0 0 54 0 33 47 0 255 0 0 78 0 14 11 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 33 47 0 0 0 0 78 0 0 0 0 0 0
具体代码:
1 2 #include<iostream> 3 #include<queue> 4 #include<cstring> 5 using namespace std; 6 int map[965][1445],w,h; 7 int fangxiang[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; 8 struct Node 9 { 10 int x; 11 int y; 12 Node (int x1,int y1):x(x1),y(y1){} 13 }; 14 void bfs(int x,int y) 15 { 16 Node node(x,y); 17 queue<Node> q; 18 while(!q.empty())q.pop(); 19 q.push(node); 20 while(!q.empty()) 21 { 22 node=q.front(); 23 q.pop(); 24 for(int i=0;i<4;i++) 25 { 26 int xx=node.x+fangxiang[i][0]; 27 int yy=node.y+fangxiang[i][1]; 28 if(xx>=0&&xx<=h+1&&yy>=0&&yy<=w+1&&map[xx][yy]) 29 { 30 map[xx][yy]=0; 31 Node next(xx,yy); 32 q.push(next); 33 } 34 } 35 } 36 } 37 int main() 38 { 39 int t; 40 cin>>t; 41 while(t--) 42 { 43 cin>>w>>h; 44 memset(map,1,sizeof(map)); 45 for(int i=1;i<=h;i++) 46 for(int j=1;j<=w;j++) 47 cin>>map[i][j]; 48 bfs(0,0); 49 for(int i=1;i<=h;i++) 50 { 51 for(int j=1;j<=w;j++) 52 { 53 cout<<map[i][j]<<" "; 54 } 55 cout<<endl; 56 } 57 cout<<endl; 58 } 59 //system("pause"); 60 return 0; 61 } 62
标签:style blog class code tar ext
原文地址:http://www.cnblogs.com/baoluqi/p/3707909.html