Java实现二阶魔方旋转】的更多相关文章

魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下: x轴正向:绿 x轴反向:蓝 y轴正向:红 y轴反向:橙 z轴正向:白 z轴反向:黄 假设我们规定,只能对该魔方进行3种操作.分别标记为: x 表示在x轴正向做顺时针旋转 y 表示在y轴正向做顺时针旋转 z 表示在z轴正向做顺时针旋转 xyz 则表示顺序执行x,y,z 3个操作 题目的要求是: 从标准输入获得一个串,表示操作序列. 程序输出:距离我们最近的那个小方块…
目录 1 问题描述 2 解决方案   1 问题描述 魔方可以对它的6个面自由旋转. 我们来操作一个2阶魔方(如图1所示): 为了描述方便,我们为它建立了坐标系. 各个面的初始状态如下:x轴正向:绿x轴反向:蓝y轴正向:红y轴反向:橙z轴正向:白z轴反向:黄 假设我们规定,只能对该魔方进行3种操作.分别标记为:x 表示在x轴正向做顺时针旋转y 表示在y轴正向做顺时针旋转z 表示在z轴正向做顺时针旋转 xyz 则表示顺序执行x,y,z 3个操作 题目的要求是:从标准输入获得一个串,表示操作序列.程序…
题意:给定二阶魔方初始状态,问N(1 <= N <= 7)步旋转操作以内最多能使几个面相同. dfs搜索+剪枝. 魔方的每个旋转操作即对应于一个置换操作.又因为相对运动,上层左旋一次和下层右旋一次等价,故可分为6类操作.上层顺.逆时针旋转,左层顺.逆时针旋转,前层顺.逆时针旋转.这样每次操作有6种选择. 剪枝一:考虑旋转操作一次后,第二次不应进行逆操作回到旋转前状态.实现的时候将每种操作分别置为0. 1, 2. 3, 4. 5,操作1^操作2 = 1则说明两操作互为逆操作. 剪枝二:当有6个面…
说明 魔方大家应该是不会陌生的,这次我们来一起用CSS实现一个魔方旋转的特效,先来看看效果图! 解释 我们要做这样的效果,重点在于怎么把6张图片,摆放成魔方的样子,而把它们摆放成魔方的样子,重点在于用好CSS的transform,这是非常重要的,好的,我们先拼出一个魔方的样子. 效果图 代码(代码比较长,朋友们可以直接粘贴复制到电脑看效果) <!DOCTYPE html> <html> <head> <meta charset="utf-8"…
package com.shb.java; /** * 取出第一个重复的字符 * @author shaobn * @date 2016-9-28 * @package_name com.shb.java */ public class Demo10 { /** * @param args * @date 2016-9-28 * @author shaobn */ public static void main(String[] args) { // TODO Auto-generated me…
//入口 public static BufferedImage constructHeatWheelView(int pageWidth, int pageHeight, DoubleHolder scaleHolder) throws ValidateException{ BufferedImage bi = new BufferedImage(pageWidth, pageHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = (Graphi…
796. 旋转字符串 给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B,那么返回True. 示例 1: 输入: A = 'abcde', B = 'cdeab' 输出: true 示例 2: 输入: A = 'abcde', B = 'abced' 输出: false 注意: A 和 B 长度不超过 100. class Solution { p…
788. 旋转数字 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数.要求每位数字都要被旋转. 如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的.0, 1, 和 8 被旋转后仍然是它们自己:2 和 5 可以互相旋转成对方(在这种情况下,它们以不同的方向旋转,换句话说,2 和 5 互为镜像):6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字. 现在我们有一个正整数 N, 计算从 1 到 N 中有…
396. 旋转函数 给定一个长度为 n 的整数数组 A . 假设 Bk 是数组 A 顺时针旋转 k 个位置后的数组,我们定义 A 的"旋转函数" F 为: F(k) = 0 * Bk[0] + 1 * Bk[1] + - + (n-1) * Bk[n-1]. 计算F(0), F(1), -, F(n-1)中的最大值. 注意: 可以认为 n 的值小于 105. 示例: A = [4, 3, 2, 6] F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6…
189. 旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [9…