改变图像 时间限制:1秒 内存限制:128M 题目描述 输入一个n行m列的黑白图像,把这个图像右转90度,然后将其输出出来。 输入描述 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。 输出描述 m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。 样例 输入 3 3 1 2 3 4 5 6 7 8 9 输出 7 4 1 8 5 2 9 6 3 c++代码
时间: 2024-04-18 18:26:28 浏览: 78
#include <iostream>
using namespace std;
int main() {
int, m;
cin >> n >> m;
int image[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> image[i][j];
}
}
for (int j = 0; j < m; j++) {
for (int i = n - 1; i >= 0; i--) {
cout << image[i][j];
if (i > 0) {
cout << " ";
}
}
cout << endl;
}
return 0;
}
相关问题
1134 :图像旋转(基础程序设计,二维数组) 题目描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。c语言
在C语言中,你可以通过创建一个新的二维数组并交换原数组的元素行和列来实现图像的顺时针旋转90度。由于新矩阵需要保存原来的“上”边元素到新的“右”边,所以算法的关键在于调整元素的位置。下面是一个简单的步骤:
1. 定义两个临时变量`temp`,用于存储当前元素。
2. 使用两层循环,外层循环遍历每一行(从下往上),内层循环遍历这一行的每一个元素(从左往右)。
3. 将当前行的第`i`个元素赋值给`temp`,然后将`temp`放在新的矩阵的`(j, (n-1)-i)`位置,这里`j`表示列索引。
4. 当所有元素处理完毕后,你得到的新二维数组就是原图顺时针旋转90度后的结果。
以下是伪代码示例:
```c
int rotateImage(int matrix[n][m]) {
int n = sizeof(matrix)/sizeof(matrix[0]);
int m = sizeof(matrix[0])/sizeof(matrix[0][0]);
// 创建新矩阵
int rotated[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
rotated[j][n - 1 - i] = matrix[i][j]; // 顺时针旋转
}
}
return rotated;
}
```
给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。 说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。 输入描述 第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1 <= m <= 100, 1 <= n <= 100。 之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。 之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。 输出描述 一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。 用例输入 1 3 3 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 用例输出 1 44.44,可以用c++来解答,且不要询问部分可以么?
可以使用C++来解答,以下是一个实现相似度计算的程序:
```c++
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int A[m][n], B[m][n];
int pixel_total = m * n;
int pixel_same = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> A[i][j];
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> B[i][j];
if (B[i][j] == A[i][j]) {
pixel_same++;
}
}
}
double similarity = pixel_same * 100.0 / pixel_total;
cout << fixed << setprecision(2) << similarity << endl;
return 0;
}
```
您可以将以上代码复制到C++编译器中运行,测试输入不同的黑白图像矩阵得到相应的相似度计算结果输出。注意,输出时需要按照题目要求将相似度精确到小数点后两位,并且输出结束后需要换行。本题不需要询问用户输入,直接按照题目要求输入即可。
阅读全文