zoukankan      html  css  js  c++  java
  • 水题 J

    一张CT扫描的灰度图像可以用一个N*N(0 < N <= 100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长。

    Input输入第一行包含一个正整数N(0 < N <= 100),表示图像的大小;接下来N行,每行包含图像的一行。图像的一行用N个整数表示(所有整数大于等于0,小于等于255),两个整数之间用一个空格隔开。Output输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。Sample Input

    6
    99 99 99 99 99 99
    99 99 99 50 99 99
    99 99 49 49 50 51
    99 50 20 25 52 99
    40 50 99 99 99 99
    99 99 99 99 99 99
    

    Sample Output

    9 8
    注意红色加粗部分条件这个题目就可以解出来了。
    #include <bits/stdc++.h>
    using namespace std;
    #define M 1005
    
    int a[M][M];
    
    
    int main(){
    	int n,s = 0,c = 0;
    	cin>>n;
    	for(int i = 0; i < n; i++)
    		for(int j = 0; j < n; j++)
    		{
    			cin>>a[i][j];
    			if(a[i][j] <= 50) s++;
    		}
    	for(int i = 0; i < n; i++)
    		for(int j = 0; j < n; j++){
    			if(a[i][j] <= 50){
    if(a[i-1][j] > 50 || a[i][j-1] > 50 || a[i+1][j] > 50 || a[i][j+1] > 50 || !i || i ==n-1 || !j || j==n-1) c++;		
    			}	
    		}
    	cout<<s<<" "<<c;
    	return 0;
    }
    
  • 相关阅读:
    Python之os模块
    Python之加密模块
    Python之random模块
    Python之操作MySQL数据库
    Python之操作Excel
    Jmeter之发送请求入参必须使用编码格式、Jmeter之发送Delete请求可能入参需要使用编码格式
    PAT B1008 数组元素循环右移问题 (20 分)
    PAT B1007 素数对猜想 (20 分)
    PAT B1006 换个格式输出整数 (15 分)
    PAT B1005 继续(3n+1)猜想 (25 分)
  • 原文地址:https://www.cnblogs.com/stul/p/9960582.html
Copyright © 2011-2022 走看看