您的位置:澳门402永利com > 计算机 网络 > 图像旋转翻调换换

图像旋转翻调换换

发布时间:2019-09-23 20:45编辑:计算机 网络浏览(107)

    09:图像旋转翻转换换

    • 查看
    • 提交
    • 统计
    • 提问

    总时限: 
    1000ms

    内部存款和储蓄器限制: 
    65536kB

    描述
    给定m行n列的图像各像素点灰度值,对其依次进行一连串操作后,求最终图像。

    内部,或者的操作及对应字符有如下多样:

    A:顺时针旋转90度;

    B:逆时针旋转90度;

    C:左右扭曲;

    D:上下翻转。

    输入
    率先行满含多少个正整数m和n,表示图像的行数和列数,中间用单个空格隔开分离。1 <= m <= 100, 1 <= n <= 100。
    接下去m行,每行n个整数,表示图像中各种像素点的灰度值,相邻多个数以内用单个空格隔绝。灰度值范围在0到255之间。
    接下去一行,富含由A、B、C、D组成的字符串s,表示必要按梯次推行的操作系列。s的长短在1到100里头。

    输出
    m'行,每行富含n'个整数,为最后图像各像素点的灰度值。个中m'为终极图像的行数,n'为末段图像的列数。相邻四个整数之间用单个空格隔断。

    样例输入
    2 3 10 0 10 100 100 10 AC

    样例输出
    10 100 0 100 10 10

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<queue>
     6 #include<vector>
     7 #include<algorithm>
     8 using namespace std;
     9 int n,m;
    10 int c[1001][1001];
    11 int b[1001][1001];
    12 char zx[101];
    13 void zh(char a)
    14 {
    15     if(a=='A')
    16     {
    17         for(int i=1;i<=n;i++)
    18         {
    19             for(int j=1;j<=m;j++)
    20             {
    21                 b[j][n-i+1]=c[i][j];
    22             }
    23         }
    24     }//顺时针旋转90度
    25     if(a=='B')
    26     {
    27         for(int i=1;i<=n;i++)
    28         {
    29             for(int j=1;j<=m;j++)
    30             {
    31                 b[m-j+1][i]=c[i][j];
    32             }
    33         }
    34     }//逆时针旋转90度
    35     if(a=='C')
    36     {
    37         for(int i=1;i<=n;i++)
    38         {
    39             for(int j=1;j<=m;j++)
    40             {
    41                 b[i][m-j+1]=c[i][j];
    42             }
    43         }
    44     }//左右翻转
    45     if(a=='D')
    46     {
    47         for(int i=1;i<=n;i++)
    48         {
    49             for(int j=1;j<=m;j++)
    50             {
    51                 b[n-i+1][j]=c[i][j];
    52             }
    53         }
    54     }//上下翻转
    55     memcpy(c,b,sizeof(c));
    56     if(a=='A'||a=='B')swap(m,n);
    57 }
    58 int main()
    59 {
    60     cin>>n>>m;
    61     for(int i=1;i<=n;i++)
    62     {
    63         for(int j=1;j<=m;j++)
    64         {
    65             cin>>c[i][j];
    66         }
    67     }
    68     scanf("%s",&zx);
    69     for(int i=0;i<strlen(zx);i++)
    70     {
    71         zh(zx[i]);
    72     }
    73     for(int i=1;i<=n;i++)
    74     {
    75         for(int j=1;j<=m;j++)
    76         {
    77             cout<<c[i][j]<<" ";
    78         }
    79         cout<<endl;
    80     }
    81     return 0;
    82 } 
    

     

    本文由澳门402永利com发布于计算机 网络,转载请注明出处:图像旋转翻调换换

    关键词: