藍橋杯 魔方(模擬 二階xyz順時針旋轉)

2021-09-02 07:42:45 字數 1511 閱讀 7270

魔方可以對它的6個面自由旋轉。

我們來操作乙個2階魔方(如圖1所示):

為了描述方便,我們為它建立了座標系。

各個面的初始狀態如下:

x軸正向:綠

x軸反向:藍

y軸正向:紅

y軸反向:橙

z軸正向:白

z軸反向:黃

假設我們規定,只能對該魔方進行3種操作。分別標記為:

x 表示在x軸正向做順時針旋轉

y 表示在y軸正向做順時針旋轉

z 表示在z軸正向做順時針旋轉

xyz 則表示順序執行x,y,z 3個操作

題目的要求是:

從標準輸入獲得乙個串,表示操作序列。

程式輸出:距離我們最近的那個小方塊的3個面的顏色。

順序是:x面,y面,z面。

例如:在初始狀態,應該輸出:

綠紅白初始狀態下,如果使用者輸入:

x則應該輸出:

綠白橙初始狀態下,如果使用者輸入:

zyx則應該輸出:

紅白綠請程式設計實現所述功能。

解題思路:

對題目給定的各個面標上序號,如圖所示:

用二維陣列 a 儲存魔方顏色,另設乙個陣列 b 儲存變換之前的魔方顏色(這裡要注意,因為 a 陣列是在變化的);

然後分別對 x/y/z 這三種變換情況進行模擬(詳見**),題目要求的顏色應當是 x 面的右上角那個小方塊的前/左/上三個面的顏色。

(水平及思路所限,**醜陋請見諒啦…(づ。◕‿‿◕。)づ)

#include #include #include #include using namespace std;

int a[6][4];

int b[6][4];

void init()

void color(int c)//根據數字輸出顏色

}void solvex()//x旋轉

void solvey()//y旋轉

void solvez()//z旋轉

int main()

color(a[0][3]);

color(a[2][0]);

color(a[4][1]);

return 0;

}

藍橋杯 二階魔方旋轉 暴力法

魔方可以對它的6個面自由旋轉。我們來操作乙個2階魔方 如圖1所示 為了描述方便,我們為它建立了座標系。各個面的初始狀態如下 x軸正向 綠 x軸反向 藍 y軸正向 紅 y軸反向 橙 z軸正向 白 z軸反向 黃 假設我們規定,只能對該魔方進行3種操作。分別標記為 x 表示在x軸正向做順時針旋轉 y 表示...

Pocket Cube二階魔方

hdu5983的一道題,看錯了輸入,看了題解發現用一位陣列存比較方便。開兩個24的陣列存完直接暴力交換就完事了,搞了兩個小時,才發現這麼簡單,真是自閉魔方。include using namespace std int a 30 b 30 int isok return1 void cpy intm...

特殊的二階魔方

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格 稱為dl 底層向右轉一格 稱為dr 右側向上轉一格 稱為ru 右側向...