校门外的树and:图像模糊处理

校门外的树
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65536kB
描述
某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入
第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

对于20%的数据,区域之间没有重合的部分;
对于其它的数据,区域之间有重合的情况。
输出
包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
样例输入
500 3
150 300
100 200
470 471
样例输出
298
解题关键知道将值放在数组里面便于存储。

#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int main (){
    int a,b,m,n;
    int k[10000];
    while(scanf("%d%d",&a,&b)!=EOF)  
    {  
    memset(k,0,sizeof(k)); 
    while(b--){
        scanf("%d%d",&m,&n);
        for(int i =m;i<=n;i++){
            k[i]=1;
        }
    }
    int s = 0;
    for(int j = 0;j<=a;j++){
        if(k[j]==0)
            s++;

    }
    printf("%d\n",s);
    }
    return 0;
}

:图像模糊处理
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65536kB
描述
给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

  1. 四周最外侧的像素点灰度值不变;

  2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

输入
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
输出
n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。
样例输入
4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100
样例输出
100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100
查看 提交 统计 提问
解题关键:将数组设置成二维的那么上下左右都可显示出来了

#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int main (){
    int m,n;
    double a[100][100];
    double b[100][100];
    double sum;
    cin >> n >> m;
    for(int i =0;i<n;i++){
        for(int j=0;j<m;j++){
            cin >>a[i][j];
            b[i][j]=a[i][j];
        }
    }
    for(int i =0;i<n;i++){
        for(int j=0;j<m;j++){
            if(i!=0&&j!=0&&i!=n-1&&j!=m-1){
            sum = (a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5;
            sum = int(sum+0.5);
            b[i][j]=sum;
            }

        }
        }
        for(int i =0;i<n;i++){
        for(int j=0;j<m;j++){
            cout <<b[i][j]<<" ";
            if(j==m-1){
                printf("\n");
            }
    }}
    return 0;

}

猜你喜欢

转载自blog.csdn.net/u011644858/article/details/80084466
今日推荐