标签:
题面:
现在要求你编写一道程序来模拟骰子的滚动。骰子不滑动也不跳动,只在桌子上向四个方向滚动,即东西南北。每次一开始,玩家使骰子的面值1,2,3对应上,北,西。骰子的相对两面的和都为7. 你的程序能接受一系列的输入命令,命令内容为north,south,east,west。如north,指骰子向北滚动一次,北面变为底面,上面变为北面。滚动角度为90°。你的程序必须计算出骰子最后朝上的数字。
输入:
输入包括一系列命令序列,每个序列对应新游戏的开始,其第一行是一个整数n(0<n<=1024),表示命令条数;接下来n行为命令。输入0表示输入结束。
输出:
对于每一个命令序列,输出骰子最后朝上的数字。
输入举例:
1
north
3
north
east
south
0
输出举例:
5
1
思路:记录每次滚动后的上北西三面的面值(a,b,c)。
代码:
1 #include <fstream> 2 #include <iostream> 3 #include <algorithm> 4 #include <cstdio> 5 #include <cstring> 6 #include <cmath> 7 #include <cstdlib> 8 9 using namespace std; 10 11 #define PI acos(-1.0) 12 #define EPS 1e-10 13 #define lll __int64 14 #define ll long long 15 #define INF 0x7fffffff 16 17 int n; 18 char s[10]; 19 20 int main() 21 { 22 //freopen("D:\\input.in","r",stdin); 23 //freopen("D:\\output.out","w",stdout); 24 while(scanf("%d",&n),n){ 25 getchar(); 26 int a=1,b=2,c=3,aa,bb,cc; 27 for(int i=0;i<n;i++){ 28 gets(s); 29 if(s[0]==‘n‘){ 30 aa=7-b; 31 bb=a; 32 cc=c; 33 }else if(s[0]==‘s‘){ 34 aa=b; 35 bb=7-a; 36 cc=c; 37 }else if(s[0]==‘w‘){ 38 aa=7-c; 39 bb=b; 40 cc=a; 41 }else{ 42 aa=c; 43 bb=b; 44 cc=7-a; 45 } 46 a=aa; 47 b=bb; 48 c=cc; 49 } 50 printf("%d\n",a); 51 } 52 return 0; 53 }
标签:
原文地址:http://www.cnblogs.com/jiu0821/p/4353084.html