题目描述

给定3行3列的图像各像素点灰度值,给定最终图像,求最短、字典序最小的操作序列。

其中,可能的操作及对应字符有如下四种:

A:顺时针旋转90度;

B:逆时针旋转90度;

C:左右翻转;

D:上下翻转。

输入输出格式

输入格式:

一个矩阵,表示初始的图像。

一个矩阵,表示最终的图像。

输出格式:

最短、字典序最小的操作序列,保证长度不超过100000000,不保证有解(若长度不超过

100000000无解则输出“Poland cannot into space!!!”)。

输入输出样例

输入样例#1: 复制

3 4 5
6 7 8
1 2 3
1 2 3
6 7 8
3 4 5
输出样例#1: 复制

D
思路:最多顺时针转2次,逆时针转一次。上下反转一次,左右翻转一次。
然后就很好处理了,判断所有的情况的组合就好了。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int map[][],tmp[][];
int judge(){
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(map[i][j]!=tmp[i][j]) return false;
return true;
}
void zhuan(){
int bns[][]={};
bns[][]=tmp[][];bns[][]=tmp[][];bns[][]=tmp[][];
bns[][]=tmp[][];bns[][]=tmp[][];bns[][]=tmp[][];
bns[][]=tmp[][];bns[][]=tmp[][];bns[][]=tmp[][];
for(int i=;i<=;i++)
for(int j=;j<=;j++) tmp[i][j]=bns[i][j];
}
void swap1(){ for(int i=;i<=;i++) swap(tmp[i][],tmp[i][]); }
void swap2(){ for(int j=;j<=;j++) swap(tmp[][j],tmp[][j]); }
int main(){
for(int i=;i<=;i++)
for(int j=;j<=;j++) scanf("%d",&map[i][j]);
for(int i=;i<=;i++)
for(int j=;j<=;j++) scanf("%d",&tmp[i][j]);
zhuan(); if(judge()){ cout<<"A";return ; }
zhuan(); if(judge()){ cout<<"AA";return ; }
zhuan(); if(judge()){ cout<<"B";return ; } zhuan();
swap1(); if(judge()){ cout<<"C";return ; }
zhuan(); if(judge()){ cout<<"AC";return ; }
zhuan(); if(judge()){ cout<<"D";return ; }
zhuan(); if(judge()){ cout<<"AC";return ; } zhuan();
swap2(); if(judge()){ cout<<"D";return ; }
zhuan(); if(judge()){ cout<<"AD";return ; }
zhuan(); if(judge()){ cout<<"AB";return ; }
zhuan(); if(judge()){ cout<<"BD";return ; } zhuan();
swap1();swap2(); if(judge()){ cout<<"CD";return ; }
zhuan(); if(judge()){ cout<<"ACD";return ; }
zhuan(); if(judge()){ cout<<"AACD";return ;}
zhuan(); if(judge()){ cout<<"BCD";return ; }
cout<<"Poland cannot into space!!!";
}
 

洛谷 P2630 图像变换的更多相关文章

  1. 洛谷P2630 题解

    我先讲一下我的思路 将A,B,C,D四种操作用函数储存起来: 枚举所有可能出现的情况:A,B,C,D,AA,AB,AC,AD,BB,BC,BD,CC,CD,DD,ABC,ABD,ACD,BCD,ABC ...

  2. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  3. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  4. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  5. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  6. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  7. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  8. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  9. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

随机推荐

  1. QT笔记 -- (6) opengl

    参考 http://blog.csdn.net/myths_0/article/details/24431597 用glut绘制一个茶壶 一句话,继承QGLWidget,实现下面三个函数,用子类定义窗 ...

  2. HDU 3584 Cube 【 三维树状数组 】

    题意:还是那篇论文里面讲到的,三维树状数组http://wenku.baidu.com/view/1e51750abb68a98271fefaa8画个立方体出来对照一下好想一点 #include< ...

  3. canvas处理图片

    canvas绘制图片的三种方法: drawImage(image, x, y) drawImage(image, x, y, width, height) drawImage(image, sourc ...

  4. map、栈————下一个更大的元素(待定,栈解法学习中)

    方法一 先遍历nums2,将每个元素后面第一个大的元素一起存入到map中,然后在遍历nums1,在map中找到. class Solution { public: vector<int> ...

  5. System.getProperty可以获取的参数

    java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目 ...

  6. POJ 3134 Power Calculus (迭代剪枝搜索)

    题目大意:略 题目里所有的运算都是幂运算,所以转化成指数的加减 由于搜索层数不会超过$2*log$层,所以用一个栈存储哪些数已经被组合出来了,不必暴力枚举哪些数已经被搜出来了 然后跑$iddfs$就行 ...

  7. 记录python之递归函数

    函数move(n,a,b,c)的定义是将n个圆盘从a借助b移动到c. def move(n,a,b,c): if n==1: print a,'-->',c move (n-1,a,c,b) p ...

  8. Qt之水平/垂直布局(QBoxLayout、QHBoxLayout、QVBoxLayout)

    简述 QBoxLayout可以在水平方向或垂直方向上排列控件,由QHBoxLayout.QVBoxLayout所继承. QHBoxLayout:水平布局,在水平方向上排列控件,即:左右排列. QVBo ...

  9. Leetcode--easy系列9

    #198 House Robber You are a professional robber planning to rob houses along a street. Each house ha ...

  10. nodejs01

    一.Node.js简介 1.1 简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,但是Ryan Dahl这哥们,鬼才般的,把这个V8搬到了服务器上,用于做服务器的软件. Node.js是一个 ...