美文网首页
数学问题——旋转图像

数学问题——旋转图像

作者: 欢城深喟 | 来源:发表于2019-03-09 11:02 被阅读0次

知识点

  • 字符数组存储字符串
  • 字符串转换为 int 类型数组 str[i]-'0'
  • 数组直接定义好大小,否则会出现 bug

int arr[55][55] 而不是 int arr[N][M]

  • 定义图像反转方法
  1. 传入参数

行、列、待转换数组、结果数组

  1. 形参用引用形式返回 int (&ans)[55][55]
  2. 图像旋转旋转 90° ,其他可用 90° 转化

后来行号 = 原来列号

后来列号 = 行数 - 1- 原来行号

  • switch case 语句的使用

代码

/*
设置数组时直接定义比输入规模大的数组不要 int arr[N][M] 
*/

#include<iostream>
#include<string.h>
using namespace std;

void convert_0(int N, int M, int arr[55][55], int (&ans)[55][55]){
    
    for(int i=0;i<N;i++){
        for(int j=0;j<M;j++){
            
            ans[i][j] = arr[i][j];
        }
    }
}

void convert_90(int N, int M, int arr[55][55], int (&ans)[55][55]){
    
    for(int i=0;i<N;i++){
        for(int j=0;j<M;j++){
            
            ans[j][N-1-i] = arr[i][j];
        }
    }
}

void print(int N, int M, int ans[55][55]){
    
    for(int i=0;i<N;i++){
        for(int j=0;j<M;j++){
            
            cout<<ans[i][j];
        }
        
        cout<<endl;
    }
}

int main(){
    
    int T, N, M; //T 组 N 行 M 列
    int angle;
    char str[55];
    int arr[55][55];
    int ans[55][55];
    cin>>T;
    
    while(T--){
        
        memset(arr, 0, sizeof(arr)); //初始化
        memset(ans, 0, sizeof(ans));
        memset(str, '0', sizeof(str));
         
        cin>>N>>M;
        
        
        for(int i=0;i<N;i++){ //字符串转换为 int 数组 
            
            cin>>str;
            for(int j=0;j<strlen(str);j++){
                
                arr[i][j] = str[j] - '0';
            }
        }
        
        cin>>angle;
        
        switch(angle){
            
            case 0:
                convert_0(N, M, arr, ans);
                print(N, M, ans);
                break;
            case 90:
                convert_90(N, M, arr, ans);
                print(M, N, ans);
                break;
            case 180:
                convert_90(N, M, arr, ans);
                convert_90(M, N, ans, arr);
                print(N, M, arr);
                break;
            case 270:
                convert_90(N, M, arr, ans);
                convert_90(M, N, ans, arr);
                convert_90(N, M, arr, ans);
                print(M, N, ans);
                break;
            default:
                break;
        }
    } 
}

相关文章

  • 数学问题——旋转图像

    知识点 字符数组存储字符串 字符串转换为 int 类型数组 str[i]-'0' 数组直接定义好大小,否则会出现 ...

  • 48. 旋转图像

    48. 旋转图像 1.想法 解:最终将所有矩阵的元素旋转90度 问题:需要旋转90度 方法:先根据对角线旋转,然后...

  • 旋转图像

    一个n x n的二维矩阵表示一个图像,将图像顺时针旋转90度。要求in-place,所以就不能用额外的空间了。 解...

  • 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味...

  • 旋转图像

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rota...

  • 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味...

  • 旋转图像

    更多精彩内容,请关注【力扣中等题】。 题目 难度:★★★☆☆类型:二维矩阵,几何方法:矩阵操作 给定一个 n × ...

  • 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味...

  • 旋转图像

    给定一个 *n *× n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这...

  • 图像旋转

    题目需求 给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这...

网友评论

      本文标题:数学问题——旋转图像

      本文链接:https://www.haomeiwen.com/subject/kacspqtx.html