字节跳动2018笔试附加题,二阶数字魔方

博客介绍了字节跳动2018年笔试中关于二阶数字魔方的附加题目。通过分析魔方的旋转方式,将操作归结为‘zheng’函数(一圈八个块的位置轮转)和‘ce’函数(一个侧面四个小块的位置轮换)。使用深度优先遍历的方法解决不超过5次的操作问题,但存在重复操作未进行优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述

魔方的旋转方式大致可分为三个(顺时针可以通过对应逆时针旋转三次实现),右面(Y)逆时针,后面(X)逆时针,上面(Z)逆时针,封装成三个函数,分析发现,所有的旋转可以归结为一圈八个块的位置轮转(函数zheng)和一个侧面四个小块的位置轮换(函数ce)。
不超过5次的操作,可以通过一个类似深度优先遍历操作实现(这里会有很多重复,暂时没有优化)

#include<iostream>
#include<vector>
using namespace std;

#define DEPTH 5

class moFang{
   
   
    private:
    vector<int> list;
    vector<vector<int>> pos = {
   
   
        {
   
   0,1,2,3},        //up 0
        {
   
   4,5,10,11},        //left 1
        {
   
   6,7,12,13},        //before 2
        {
   
   8,9,14,15},        //right 3
        {
   
   16,17,18,19},        //down 4
        {
   
   20,21,22,23}        //behind 5
    };
    
    void zheng(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8){
   
   
        int temp1 = list[p7], temp2 = list[p8];
        list[p7] = list[p5]; list[p8] = list[p6];
        list[p5] = list[p3]; list[p6] = list[p4];
        list[p3] = list[p1]; list[p4] = list[p2];
        list[p1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值