zoukankan      html  css  js  c++  java
  • 洛谷--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;
    }
  • 相关阅读:
    【(高职专科组)第十一届蓝桥杯省模拟赛答案】给定一个数列,请问找出元素之间最大的元素距离。
    【(高职专科组)第十一届蓝桥杯省模拟赛答案】给定一个数列,请问数列中最长的递增序列有多长。
    POJ 2391 二分+最大流
    HDU 4529 状压dp
    NYOJ 747贪心+dp
    NYOJ 745 dp
    HDU 2686 / NYOJ 61 DP
    HDU 4313树形DP
    HDU 4303 树形DP
    POJ 2342 树形DP
  • 原文地址:https://www.cnblogs.com/chen74123/p/6882724.html
Copyright © 2011-2022 走看看