NOI题库 09:图像旋转翻转变换
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:图像旋转翻转变换的更多相关文章
- NOI题库刷题日志 (贪心篇题解)
这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点( ...
- NOI题库 1768最大子矩阵 题解
NOI题库 1768最大子矩阵 题解 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...
- NOI题库-小学奥赛QwQ
今天Loli教育我们让我们来看看NOI题库的奥赛部分,不过,为何是小学的( ⊙ o ⊙ )啊!感觉智商被各种侮辱. 余数相同问题: 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为 ...
- noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T11——T20
T11 图像旋转 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数.1 <= n <= 100,1 <= ...
- noi题库(noi.openjudge.cn) 1.7编程基础之字符串T31——T35
T31 字符串P型编码 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串122344111可被描述为"1个1.2个 ...
- noi题库 1.7 字符串
前九题 01:统计数字字符个数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字 ...
- noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30
T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替 ...
- NOI题库192 生日蛋糕
192:生日蛋糕 总时间限制: 5000ms 内存限制: 65536kB 描述 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i ...
- noi 1.8 11图像旋转
水题不解释 其实我偷懒了 直接输出,,,,,,, 个人QQ:757394026团队QQ:466373640个人博客:www.doubleq.winc++/noi/信息学奥数博客:http://www. ...
随机推荐
- leetcode - Merge Sorted Array (run time beats 100.00% of cpp submissions.)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...
- linux强制用户下线
Linux系统为多用户多任务系统,因此允许多个用户登录到系统,有时候,我们需要强制某些用户下线. 前提:必须是root权限操作:(1)使用who查看目前有哪些用户登录了服务器,见下图 [root@vm ...
- Linux命令学习-date
date命令可以用来显示和修改系统日期时间,注意不是time命令. 1.在命令行输入date显示当前时间 [root@vm4 logs]# dateSat Nov 22 00:00:02 CST 20 ...
- Loadrunner:场景运行较长时间后报错:Message id [-17999] was not saved - Auto Log cache is too small to contain the message.
loadrunner运行时间较长后,跑数据过程老是失败,有如下error: Message id [-17999] was not saved - Auto Log cache is too smal ...
- Visio使用遇到的问题
1.UML Background Add-on --------------------------- 此 UML 形状所在的绘图页不是 UML 模型图的一部分. 该形状设计用于利用 UML 模型图模 ...
- easyui 的 DataGrid View 使用
easyui真是后台人员的宝呀,让不会前台的程序员,不用再用那些自己看着都恶心的表格了! 今天来说说easyui datagrid 的 数据表格详细展示表格,这个有趣多了! 先上图 然后是代码 $(' ...
- 搭建一个Web应用
因为EasyUI会涉及到与后台数据的交互,所以使用Spring MVC作为后台,搭建一个完整的Web环境 使用gradle作为构建工具 build.gradle group 'org.zln.lkd' ...
- 19SpringMvc_在业务控制方法中收集List集合中包含JavaBean参数
本文要实现的功能是给一张表单:
- PATH路径出错导致任何命令都找不到解决方法
1.export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端或者cd /usr/ ...
- Oracle Update
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通 ...