码迷,mamicode.com
首页 > 其他好文 > 详细

华为历年试题(掷骰子游戏 7)

时间:2014-06-27 22:55:53      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   问题      

  • 问题描述:

在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示:

1)  9:无障碍

2)  1:停掷一轮,即下轮所掷数字无效;

3)  2:后退两步,如果已经到起点不再后退;

4)  3:奖励前进一步

如果在游戏过程中,已经走到地图终点,则游戏结束。根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步。

  • 要求实现函数:

void dice(int map_len, int* map, int* dice_val, int* output)

【输入】  int map_len,地图数组的长度

          int* map,地图数组,值表示障碍

int* dice_val,5个骰子数的数组

【输出】  int *output,玩家共前进了多少步

【返回】  无

注:玩家是从起始位置开始,即地图数组的第一位,骰子数只能是1~6

  • 示例

1)  输入:map_len = 15, map = {9,1,9,9,9,2,9,9,9,9,9,9,9,9,9},dice_val = {1,2,1,3,1},

返回:4

2)  输入:map_len = 16, map = {9,9,9,9,9,1,9,3,9,9,2,9,9,9,9,9},dice_val = {2,1,4,1,6},

返回:15

 

#include<iostream>
using namespace std;
 
void dice(int len, int* map, int* dice_val, int* output)
{
    int i=0,j=0,step=0;
    for(;i<len&&j<5;)
    {
       step = dice_val[j++];
       i += step;
       if(i>=len-1)//如果在游戏过程中,已经走到地图终点,则游戏结束。
       {
         *output = len-1;
         return;
       
       }          
           

       if(map[i]==9) 
           continue;
       else if(map[i]==1)
           j++;
       else if(map[i]==2)
       {
         if(i-2>=0)
             i -=2;
         else
             i = 0;
       }
       else if(map[i]==3)
       {
           i++;
           if(i>=len-1)//如果在游戏过程中,已经走到地图终点,则游戏结束。
           {
               *output = len-1;
               return;

           }
       }    
    }
    *output = i;

}

void main()
{
    int map_len=16;
    int map[16]={9,9,9,9,9,1,9,3,9,9,2,9,9,9,9,9};
    int dice_val[5]={2,1,4,1,6};
    int* output=new int;
    dice(map_len, map, dice_val,output);
    cout<<*output;
    cout<<endl;
}

 

 

华为历年试题(掷骰子游戏 7),布布扣,bubuko.com

华为历年试题(掷骰子游戏 7)

标签:style   blog   color   os   问题      

原文地址:http://www.cnblogs.com/Xylophone/p/3811030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!