【NOIP2018 模拟赛04.14】马赛克

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41709770/article/details/79974651

这里写图片描述


题解:

–这道题比较简单,唯一要注意的就是四舍五入的问题,我的方法是:
x-(int)x
x是一个double变量,强制转换为int后自动只取整数部分,两数相减就能得到小数部分了,最后判断一下四舍五入就行


代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN=1005;

int n,m;
int g[MAXN][MAXN];

int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++)
            scanf("%d",&g[i][j]);
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(j!=1)
                printf(" ");
            if(i==1||i==n){
                printf("%d",g[i][j]);
            }
            else if(j==1||j==m){
                printf("%d",g[i][j]);
            }
            else{
                double x=(double)(g[i][j]+g[i-1][j]+g[i+1][j]+g[i][j-1]+g[i][j+1])/5;
                if(x-(int)x>=0.5){
                    printf("%d",(int)x+1);
                }
                else{
                    printf("%d",(int)x);
                }
            }
        }
        printf("\n");
    }
    return 0;
}
阅读更多
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页