• nyoj--92--图像有用区域(模拟)


    图像有用区域

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:4
    描述

    “ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。

         

                    图1                                                        图2 

    已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点)。

    输入
    第一行输入测试数据的组数N(0<N<=6)
    每组测试数据的第一行是两个个整数W,H分表表示图片的宽度和高度(3<=W<=1440,3<=H<=960)
    随后的H行,每行有W个正整数,表示该点的像素值。(像素值都在0到255之间,0表示黑色,255表示白色)
    输出
    以矩阵形式输出把黑色框之外的区域变黑之后的图像中各点的像素值。
    样例输入
    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
    来源
    [张云聪]原创
    上传者

    张云聪



    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int map[1450][1450];
    int h,w;
    void dfs()
    {
    	for(int i=1;i<=h;i++)
    	for(int j=1;j<=w;j++)
    	if(map[i][j]!=0) map[i][j]=-1;
    	else break;
    	for(int i=1;i<=h;i++)
    	for(int j=w;j>=0;j--)
    	if(map[i][j]!=0) map[i][j]=-1;
    	else break;
    	for(int i=1;i<=w;i++)
    	for(int j=1;j<=h;j++)
    	if(map[j][i]!=0) map[j][i]=-1;
    	else break;
    	for(int i=1;i<=w;i++)
    	for(int j=h;j>=0;j--)
    	if(map[j][i]!=0) map[j][i]=-1;
    	else break;
    }
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		scanf("%d%d",&w,&h);
    		for(int i=1;i<=h;i++)
    		for(int j=1;j<=w;j++)
    		scanf("%d",&map[i][j]);
    		dfs();
    		for(int i=1;i<=h;i++)
    		{
    			for(int j=1;j<w;j++)
    			if(map[i][j]==-1)
    			printf("0 ");
    			else
    			printf("%d ",map[i][j]);
    			if(map[i][w]==-1)
    			printf("0
    ");
    			else
    			printf("%d
    ",map[i][w]);
    		}
    	}
    	return 0;
    }



  • 相关阅读:
    个人项目博客
    个人博客作业
    软件工程 热身作业
    OO第四次博客作业--第四单元总结及课程总结
    OO第三次博客作业--第三单元总结
    OO第二次博客作业--第二单元总结
    OO第一次博客作业--第一单元总结
    【杂谈】研究生最后一年学习计划
    【记录】一些非常方便的命令集合
    【Git】基本命令使用
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273475.html
Copyright © 2020-2023  润新知