NOI题库开始的题,也是略水,当然也是大水,所以彼此彼此

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

  我只想吐槽,由于最近变量全都设为全局变量了,这次傻逼了,忘了把过程中的变量在过程中重新定义,使得多调试了好多次。。以此为鉴!

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int d[110][110]={0},d1[110][110]={0};//d1位控制变换用的
int n,m;
int i,j;
char work[200];
int k; void A()//操作A
{
int i,j;
memset(d,0,sizeof(d));
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
d[j][m-i+1]=d1[i][j];
int temp=m;
m=n;
n=temp;
memset(d1,0,sizeof(d1));
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
d1[i][j]=d[i][j];
//cout<<"A is right"<<endl;
} void B()//操作B,逆时针旋转90°就相当于顺时针旋转270°
{
A();
A();
A();
//cout<<"B is right"<<endl;
} void C()//操作C
{
int i,j;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
d[i][j]=d1[i][n-j+1];
memset(d1,0,sizeof(d1));
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
d1[i][j]=d[i][j]; //cout<<"C is right"<<endl;
} void D()//操作D
{
int i,j;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
d[i][j]=d1[m-i+1][j];
memset(d1,0,sizeof(d1));
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
d1[i][j]=d[i][j];
//cout<<"D is right"<<endl;
} int main()
{
scanf("%d%d",&m,&n);
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{
scanf("%d",&d[i][j]);
d1[i][j]=d[i][j];
}
cin>>work;
int k=strlen(work);
//cout<<k;
for (i=0;i<k;i++)
{
if (work[i]=='A')
A();
if (work[i]=='B')
B();
if (work[i]=='C')
C();
if (work[i]=='D')
D();
}
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
printf("%d ",d[i][j]);
printf("\n");
}
return 0;
}

NOI题库 09:图像旋转翻转变换的更多相关文章

  1. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  2. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

  3. NOI题库-小学奥赛QwQ

    今天Loli教育我们让我们来看看NOI题库的奥赛部分,不过,为何是小学的( ⊙ o ⊙ )啊!感觉智商被各种侮辱. 余数相同问题: 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为 ...

  4. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T11——T20

    T11 图像旋转 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数.1 <= n <= 100,1 <= ...

  5. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T31——T35

    T31 字符串P型编码 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串122344111可被描述为"1个1.2个 ...

  6. noi题库 1.7 字符串

    前九题 01:统计数字字符个数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字 ...

  7. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

    T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替 ...

  8. NOI题库192 生日蛋糕

    192:生日蛋糕 总时间限制: 5000ms 内存限制: 65536kB 描述 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i ...

  9. noi 1.8 11图像旋转

    水题不解释 其实我偷懒了 直接输出,,,,,,, 个人QQ:757394026团队QQ:466373640个人博客:www.doubleq.winc++/noi/信息学奥数博客:http://www. ...

随机推荐

  1. Android Studio运行程序出现Session ‘app’: Error Launching activity 解决办法

    session "app":error launching activity 一下两种方法,可以轻松解决: 1. 2.把复选框去除:  

  2. java 21 - 12 IO流的打印流

    打印流 字节流打印流 PrintStream 字符打印流 PrintWriter打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提 ...

  3. (已解决) 未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral,

    在项目web.config里面添加: <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4F ...

  4. createElement创建标签及appendChild添加到元素的后面

    var p = document.createElement('p'); var box = document.getElementsByTagName('div')[0]; box.appendCh ...

  5. C# 改变无边框窗体的尺寸大小

    以下代码为修改窗体尺寸的代码: const int HTLEFT = 10; ; ; ; ; ; const int HTBOTTOMLEFT = 0x10; ; protected override ...

  6. Linux 进程与线程一(创建-关闭线程)

    进程是一个实体.每一个进程都有他自己的内存地址段(heap,stack等等) 进程是执行中的程序. 程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体. 进程是操作系统中最基 ...

  7. Android Studio介绍

    参考资料:http://www.cnblogs.com/smyhvae/p/4390905.html 第一次使用Android Studio时你应该知道的一切配置   as是一种不错的开发Androi ...

  8. Caffe学习系列(6):Blob,Layer and Net以及对应配置文件的编写

    深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成.Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型.它将所有的信息数据定义为blob ...

  9. Python之socket(套接字)

    Socket 一.概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  10. 20145222黄亚奇《Java程序设计》第5周学习总结

    教材学习内容总结 Java中所有错误都会被打包为对象,运用try.catch,可以在错误发生时显示友好的错误信息. 运用try.catch,还可以在捕捉处理错误之后,尝试恢复程序正常执行流程.如: i ...