• 34-数细线


    题目内容:

    现有画有黑线(直线或曲线)的白底图片一张,计算出有多少条黑线、并依次输出每条黑线所占的点数。图片我们用0、1图表示,1代表黑点 0 代表白点,某点周围8个方向都算连通,如下图所示,共有3条黑线,长度分别是5、3、5:
    1 0 0 0 0 0 0
    0 1 1 1 1 0 0
    0 0 0 0 0 0 0
    1 1 0 0 0 1 1
    1 0 0 1 1 1 0

    输入描述

    图的宽w、高h,换行输入图的像素点.(测试数据结果唯一确定)


    输出描述

    黑线条数、换行输出每条线长度.(条数及每个长度各占一行).


    输入样例

    7 5
    1 0 0 0 0 0 0
    0 1 1 1 1 0 0
    0 0 0 0 0 0 0
    1 1 0 0 0 1 1
    1 0 0 1 1 1 0


    输出样例

    3
    5
    3
    5
    */
    //思路:广搜

    #include <iostream>
    #include <queue>
    using namespace std;
    int a[100][100];
    int n, m;
    	
    typedef struct node{
    	int x;
    	int y;
    }Node;
    int b[9][2] = {-1, -1, -1, 0, -1, 1, 0, -1, 0, 1, 1, -1, 1, 0, 1, 1};
    
    int wf(int x, int y){
    	queue<Node> point;
    	Node n1, n2, n3;
    	if(a[x][y] == 0)
    		return 0;
    	int count = 0;
    	int yy, xx;
    	n1.x = x; n1.y = y;
    	point.push(n1);		
    	while(point.empty() != 1){
    		n2 = point.front();
    		a[n2.x][n2.y] = 0;
    		point.pop();
    		count++;
    		for(int i = 0; i < 8; i++){
    			xx = n2.x + b[i][0];
    			yy = n2.y + b[i][1];
    			if(xx < n && xx >= 0 && yy < m && yy >= 0){	
    				int temp = 0;
    				temp = a[xx][yy];			 
    				if(a[xx][yy] == 1)
    				{
    					n3.x = xx; n3.y = yy;
    					a[xx][yy] = 0;   //必须清零,否则前一个广搜时会重复 
    					point.push(n3);
    				}
    			}
    		}		
    	}
    	return count;
    }
    
    int main(){
    	int xian = 0;
    	int b[100];
    	cin >> m >> n;
    	for(int i = 0; i < n; i++)
    		for(int j = 0; j < m; j++)	
    			cin >> a[i][j];
    	for(int i = 0; i < n; i++){
    		for(int j = 0; j < m; j++){
    			if(a[i][j] == 1){
    				int t = wf(i, j);
    				b[xian++] = t;
    			} 
    		}
    	}
    	cout << xian << endl;
    	for(int i = 0; i < xian; i++){
    		cout << b[i] << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    MySQL模糊匹配查询like、regexp、in
    MySQL数据库——表操作
    (转)MySQL join语法解析与性能分析
    (转)解决 TortoiseGit 诡异的 Bad file number 问题
    四、windows下TortoiseGit的使用与操作
    (转)创建GitHub技术博客
    二、Windows下TortoiseGit的安装与配置
    三、TortoiseGit之配置密钥
    集训之6-26模拟赛一
    集训之各种dp
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7707926.html
Copyright © 2020-2023  润新知