1. 程式人生 > >華為機試題——擲骰子游戲

華為機試題——擲骰子游戲

/*問題描述:  
在擲骰子游戲中,會根據所擲數字在地圖中前進幾步,前進完成後需要根據當前地圖位置所示的障礙進行相應操作,其中障礙表示: 
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 */

/*
題意不清!!每次篩子zhi完一次後,是否只執行一次操作??這裡假設就一次操作
*/
#include <iostream>
using namespace std;


void dice(int map_len,int *map,int *dice_val,int* output)
{
	int i;
	int j;
	j=0;
	int len=map_len;
	int suspend=0;
	for(i=0;i<5;i++)
	{
		if(suspend==1)
		{
			suspend=0;
			continue;
		}
		j+=dice_val[i];
		if(j>=len-1)
		{
			*output=len-1;
			return;
		}
		if(map[j]==2)
			j=((j-2<0)?(0):(j-2));
		else if(map[j]==3)
		{
			j+=1;
			if(j>=len-1)
			{
				*output=len-1;
				return;
			}
		}
		else if(map[j]==1)
			suspend=1;
	}
	*output=j;
	return;
}
int main(void)
{
	int map_len=15;
	int map[15]={9,1,9,9,9,2,9,9,9,9,9,9,9,9,9};
	int dice_val[5]={1,2,1,3,1};
	int output;
	dice(map_len,map,dice_val,&output);
	cout<<output<<endl;
	

	int map_len2=16;
	int map2[16]={9,9,9,9,9,1,9,3,9,9,2,9,9,9,9,9};
	int dice_val2[5]={2,1,4,1,6};
	int output2;
	dice(map_len2,map2,dice_val2,&output2);
	cout<<output2<<endl;
	system("pause");
	return 0;
}

相關推薦

試題——

/*問題描述:   在擲骰子游戲中,會根據所擲數字在地圖中前進幾步,前進完成後需要根據當前地圖位置所示的障礙進行相應操作,其中障礙表示:  1) 9:無障礙  2) 1:停擲一輪,即下輪所擲數字無效; 3) 2:後退兩步,如果已經到起點不再後退; 4) 3:獎勵前進一步 

玩eos上的---dice智慧合約

dice智慧合約的操作步驟,在eos的github上有,這裡不再贅述,這裡主要講dice智慧合約的實現。 dice在中文中是骰子。聰明的你已經猜到了,這可能是一個擲骰子游戲,沒錯,這就是一個雙人擲骰子游戲。 現在我們沿著操作步驟看它的實現: 第一步:充

python分析

最近學習了點統計學及python知識,試著分析下擲骰子游戲。骰子按標準6面,分析一次投1顆、2顆、3顆、4顆,投擲10、100、1000、10000次時的結果。 使用工具 Jupyter Notebook 分析利器 matplotlib、pyga

java聯機版

目前只實現了一個人的客戶端,由服務端進行判斷輸贏,返回結果!人數,可以自行增加! 我使用多執行緒的方式,即每次押注都會通知伺服器端新開執行緒,在參與人數比較少的情況下,不會又問題!但是如果參與人數比較多,由於我的基準值,也就是初始金錢值使用的是同一個靜態變數,必然有可能會造

試題:判斷一個數字中是否包含兩個相同的

描述: 判斷給定的一個數字,把它當成字串以後,該字串中是否包含相同的兩個子串,子串的長度要求大於等於2。 比如:12123,該數字包含兩個“12”子串; 又比如:1223122,該數字包含兩個“

試題-判斷一個數字中是否包含兩個相同的

#include <iostream> #include <sstream> #include <string> #include <map> using namespace std; int main() {

試題

關聯關係: package huawei.cn; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; import java

試題(練習)

目錄 1、選秀節目打分 2、奇偶排序 3、作業系統任務排程問題。 4. 列印陣列中最大的2個數 5.迴文數字判斷。  6.中級題:亮著電燈的盞數   7.高階題:地鐵換乘 8.判斷if語句括號是否合法 9. 列印 楊輝三角形

牛客網------試題2

寫出一個程式,接受一個由字母和數字組成的字串,和一個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫。 輸入描述: 輸入一個有字母和數字以及空格組成的字串,和一個字元。 輸出描述: 輸出輸入字串中含有該字元的個數。 示例1 輸入 ABCDEF A 輸出

試題 查詢

每組輸入第一行是兩個正整數N和M(0<N<=30000,0<M<5000),分表代表學生的數目和操作的數目。 學生ID編號從1編到N。 第二行包含N個整數,代表這N個學生的初始成績,其中第i個數代表ID為i的學生的成績。 接下來有M行。每一行有一個字元C(只取‘Q’或‘U’

某道試題

這道題比較簡單,我就直接放題目跟我的解答吧 對輸入的單詞進行字典序排序輸出: 字典序定義 1. 單詞中字母比較不區分大小寫,兩個單詞先以第一個字母作為排序的基準, 如果第一個字母相同,就用第二個字

試題--二進位制數的每位進行0和1反轉求值

一、問題描述 功能描述:對一個二進位制數的每位進行0和1反轉,求翻轉後的二進位制所對應的十進位制 輸入:110 輸出:1 要求實現方法: public String getNumber(BigInteger data) {     //TODO     return "";

試題——完全數判斷

  這篇博文同上篇博文百度2017年暑期實習生筆試題——單詞接龍同屬2016中興捧月藍劍之路挑戰賽初賽模擬測試題,相比前一題難度偏低,非惡意灌水,僅為保證該系列博文的完整性。   測試用例如下圖:   中興的比賽中官方已經為我們實現了主程式,只需要我們自己實現Perfect

試題[2017.8.23]

題目:給定一個正整數,給出消除重複數字以後最大的整數 輸入描述: 正整數,注意考慮長整數 輸出描述: 消除重複數字以後的最大整數 下面的好像有問題,當輸入是4325432時結果不對 #includ

試題之表示式求值

今天做了華為機試,最後一道題做錯了,回來又重新寫了一下。 表示式求值往年好像有的,但是這次的題加了括號,所以寫起來麻煩了一些。 還有就是在處理+-號的時候做錯了,可能是當時腦袋太蒙了,沒有看出來,160的題只得了61分(不過話說這個1是咋來的?)。 下面附上程式碼吧: #i

試題-判斷二進位制中0的個數【4】

題目描述: 輸入一個10進位制數字,請計算該數字對應二進位制中0的個數,注意左數第一個1之前的所有0都不需要計算。不需要考慮負數的情況。 我之前的部落格講過類似的問題,部落格地址如下: 思

試題--9.數字顛倒

兩種型別:逆序不去開始的0,逆序去掉開頭的0 逆序不去開始的0 題目描述 描述: 輸入一個整數,將這個整數以字串的形式逆序輸出 程式不考慮負數的情況,若數字含有0,則逆序形式也含有0,如輸入為

試題--3.明明的隨機數

題目描述: 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數

牛客試題刷題筆記(一)

馬上華為提前批開始了,嚇得我趕緊上牛客網刷題,記錄如下: 所有程式碼都在github 1.字串最後一個單詞的長度 一段英文字串中最後一個單詞的長度。 題目比較簡單,做法有很多: 比如, 可以放到stringstream裡面split,拿到最後一個單詞

試題--高鐵換乘(Floyed演算法)

題目: 已知2條地鐵線路,其中A為環線,B為東西向線路,線路都是雙向的。經過的站點名分別如下,兩條線交叉的換乘點用T1、T2表示。編寫程式,任意輸入兩個站點名稱,輸出乘坐地鐵最少需要經過的車站數量(含