NC249948. 小d和图片压缩
描述
输入描述
第一行两个整数,代表这个图像的长度和宽度,题目保证均为偶数。
接下来行,每行个整数,第行第列的数值代表这个像素点代表的灰度值。不能整除也没有关系,向下取整就行了。
输出描述
输出行列,代表压缩完以后的图像,每一行两个数之间用一个空格隔开。
示例1
输入:
4 2 1 5 3 3 6 6 6 6
输出:
3 6
说明:
C++(clang++ 11.0.1) 解法, 执行用时: 297ms, 内存消耗: 5244K, 提交时间: 2023-04-11 19:36:37
#include<bits/stdc++.h> using namespace std; int m,n,a[1001][1001]; int main() { cin>>n>>m; int i,j; for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>a[i][j]; for(i=1;i<=n;i+=2) { for(j=1;j<=m;j+=2) { cout<<(a[i][j]+a[i+1][j]+a[i][j+1]+a[i+1][j+1])/4<<" "; } cout<<endl; } }
pypy3 解法, 执行用时: 599ms, 内存消耗: 70884K, 提交时间: 2023-04-07 19:02:40
n,m = map(int,input().split()) a = [list(map(int,input().split())) for _ in range(n)] res = [] for i in range(0,n,2): lin = [] for j in range(0,m,2): lin.append((a[i][j]+a[i+1][j]+a[i][j+1]+a[i+1][j+1])//4) res.append(lin) for i in res: print(*i)
Python3 解法, 执行用时: 1424ms, 内存消耗: 5820K, 提交时间: 2023-04-07 19:06:38
n,m = map(int,input().split()) for i in range(0,n,2): l1 = list(map(int,input().split())) l2 = list(map(int,input().split())) for j in range(0,m,2): print((l1[j]+l1[j+1]+l2[j]+l2[j+1])//4,end=' ') print()