洛谷--T4563 滚骰子

Posted Alex丶Baker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷--T4563 滚骰子相关的知识,希望对你有一定的参考价值。

题目描述

奶牛Bessie有一个放在桌面上的骰子,如图1所示

技术分享

数字1在上方,数字2在South(南)方位,数字3在East(东)方位,每一对相反方位的数字之和是7,按照上述.数字5在North(北)方位,数字4在west(西)方位,数字6在下方,如图l所示.数字4,5,6在图1中是看不到的。

骰子的初始位置如图1所示.按照下列 6条规则旋转骰子,规则如图2和图3所示:

技术分享

图2中所示的4条旋转规则是将骰子按照规则指定的方位旋转90度。图3中所示的2

技术分享

条旋转规则是将骰子沿水平方向分别向left(左)或Right(右)方位旋转90度

图3.旋转规则Left(左)、Right(右)

你需要编写一个程序,从图1所示的方位开始,根据给定的一系列规别连续的旋转骰子.程序要求输出旋转骰子过程中位于上方的数字之和(其中包括图1所示的初始方位上的数字1)。

输入输出格式

输入格式:

 

第一行输入一个整数n(n≤1000),表示执行旋转的总步数。

第2~n-1行分别输入6条旋转规则中6个方位中的一个

 

输出格式:

 

一行输出旋转过程中位于骰子上方的数字之和

 

输入输出样例

输入样例#1:
5
North
North
East
South
West
输出样例#1:
21
输入样例#2:
8
West
North
Left
South
Right
North
Left
East
输出样例#2:
34


恶心的模拟

#include<bits/stdc++.h>
using namespace std;
int ma[100000];
int n,x,ans=1;
string s;
void swap(int a,int b)
{
    int t=a;
    a=b;
    b=t;
}
int main()
{
    scanf("%d",&n);
    ma[1]=1;
    ma[2]=2;
    ma[3]=3;
    ma[4]=4;
    ma[5]=5;
    ma[6]=6;
    for(int i=1;i<=n;i++)
    {
        cin>>s;
        if(s[0]==N)
        {
            int t1=ma[5]; ma[5]=ma[6]; ma[6]=t1;
            int t2=ma[5]; ma[5]=ma[1]; ma[1]=t2;
            int t3=ma[1]; ma[1]=ma[2]; ma[2]=t3;
        }
        else if(s[0]==S)
        {
            int t1=ma[5]; ma[5]=ma[6]; ma[6]=t1;
            int t2=ma[6]; ma[6]=ma[2]; ma[2]=t2;
            int t3=ma[2]; ma[2]=ma[1]; ma[1]=t3;
        }
        else if(s[0]==E)
        {
            int t1=ma[1]; ma[1]=ma[3]; ma[3]=t1;
            int t2=ma[1]; ma[1]=ma[4]; ma[4]=t2;
            int t3=ma[4]; ma[4]=ma[6]; ma[6]=t3;
        }
        else if(s[0]==W)
        {
            int t1=ma[1]; ma[1]=ma[4]; ma[4]=t1;
            int t2=ma[1]; ma[1]=ma[3]; ma[3]=t2;
            int t3=ma[3]; ma[3]=ma[6]; ma[6]=t3;
        }
        else if(s[0]==R)
        {
            int t1=ma[2]; ma[2]=ma[4]; ma[4]=t1;
            int t2=ma[2]; ma[2]=ma[3]; ma[3]=t2;
            int t3=ma[3]; ma[3]=ma[5]; ma[5]=t3;
        }
        else if(s[0]==L)
        {
            int t1=ma[2]; ma[2]=ma[3]; ma[3]=t1;
            int t2=ma[2]; ma[2]=ma[4]; ma[4]=t2;
            int t3=ma[4]; ma[4]=ma[5]; ma[5]=t3;
        }
        ans+=ma[1];
    }
    printf("%d",ans);
    return 0;
}

 

以上是关于洛谷--T4563 滚骰子的主要内容,如果未能解决你的问题,请参考以下文章

用 T-SQL 创建一个可视的骰子滚轮(只是为了好玩)

洛谷 P2628 冒险岛

C语言每日一练——第61天:掷骰子游戏

掷骰子 dp

记忆化搜索掷骰子 hpuoj

LeetCode(剑指 Offer)- 60. n个骰子的点数