转骰子​

转骰子

【转骰子】骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。骰子的初始状态和初始状态转动后的状态如图所示

输入描述:

输入一行,为只包含LRFBAC的字母序列,最大长度为50,字母可重复

输出描述:

输出最终状态

示例1

输入
L R
输出
123456

C++

/*
【转骰子】骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,
放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),
可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),
可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。
输入描述: 输入一行,为只包含LRFBAC的字母序列,最大长度为50,字母可重复
输出描述: 输出最终状态
示例1:
输入
L R
输出
123456
*/
#include<bits/stdc++.h>
using namespace std;

void rotate(char& vec, string& start);

int main()
{
	char s;
	vector<char>vec;
	s = getchar();
	while (s !='\n')
	{
		if(s != ' ')
		{
			vec.push_back(s);
		}
		s = getchar();
	}
	string start = "123456";
	for (int i = 0; i < vec.size();i++)
	{
		rotate(vec[i], start);
	}

	cout << start << endl;
	system("pause");
	return 0;
}

void rotate(char& vec,string& start)
{
	if(vec == 'L')
	{
		char temp = start[0];
		start[0] = start[4];
		start[4] = start[1];
		start[1] = start[5];
		start[5] = temp;
	}
	if (vec == 'R')
	{
		char temp = start[0];
		start[0] = start[5];
		start[5] = start[1];
		start[1] = start[4];
		start[4] = temp;
	}
	if (vec == 'F')
	{
		char temp = start[2];
		start[2] = start[4];
		start[4] = start[3];
		start[3] = start[5];
		start[5] = temp;
	}
	if (vec == 'B')
	{
		char temp = start[2];
		start[2] = start[5];
		start[5] = start[3];
		start[3] = start[4];
		start[4] = temp;
	}
	if (vec == 'A')
	{
		char temp = start[0];
		start[0] = start[3];
		start[3] = start[1];
		start[1] = start[2];
		start[2] = temp;
	}
	if (vec == 'C')
	{
		char temp = start[0];
		start[0] = start[2];
		start[2] = start[1];
		start[1] = start[3];
		start[3] = temp;
	}
}

全部评论

相关推荐

05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务