昨天有幸參加了極致遊戲的筆試,題目分為了30道選擇題(60分)和2道程式設計題(40分),都只有一次進入作答的機會。兩道程式設計題趁還有映像趕緊記錄一下。
題目描述
輸入是一串全部由左括號和右括號組成且保證括號配對的字串。例如:"()(()()(()()))"
現有一些計算規則如下:
() 值為1
ab 值為a+b
(ab) 值為2*(a+b)
根據上述規則,樣例"()(()()(()()))"的結果為:
=1+2*(1+1+2*(1+1))
=1+2*(2+4)
=13請編寫程式,要求時間複雜度不大於o(n)。
輸入格式
輸入包含一行,一串平衡括號字串
輸出格式
輸出包含一行,乙個整數,根據規則計算出的該平衡括號字串的值。
解題思路
對於這種匹配括號的題用棧或遞迴來做就很適合。
**
#include
#include
using
namespace std;
intfunc
(string str,
int&idx)
else
return2*
func
(str,
++idx);}
else
if(str[idx]
==')'
)return0;
}int
main()
題目描述
現給出一串字串,例如"-1(3(2)(5))(4(6))",要求用該字串生成一棵二叉樹,並用中序遍歷輸出該二叉樹。
建立節點順序為先建立左子樹再建立右子樹,字串中,整數代表該節點的值,用括號括起來的代表是一棵子樹,樣例中生成的二叉樹為:
中序遍歷結果為2 3 5 -1 6 4。
樣例輸入
-1(3(2)(5))(4(6))
樣例輸出
2 3 5 -1 6 4
解題思路
做該題分為兩個步驟,先將字串反序列化為一棵二叉樹,然後用中序遍歷輸出該二叉樹,其中中序遍歷好說,而反序列化可像上題一樣用遞迴來做。
**
#include
#include
using
namespace std;
//-1(3(2)(5))(4(6))
struct treenode};
intgetval
(string str,
int&idx)
}return isz?val:
-val;
}treenode *
func
(string str,
int&idx)
} idx++
;//跳過該子樹右括號
return p;
}void
midprint
(treenode *head)
intmain()
網易互娛2020校招遊戲研發筆試題
第一題 判斷乙個數的二進位制是否為回文串 ac 方法一 存成陣列之後比較 include include include include using namespace std int t,x,cnt int num 111 int main int flag 1 for int i 0 i2 i ...
騰訊校招筆試題之紙牌遊戲
牛牛和羊羊正在玩乙個紙牌遊戲。這個遊戲一共有n張紙牌,第i張紙牌上寫著數字ai。牛牛和羊羊輪流抽牌,牛牛先抽,每次抽牌他們可以從紙牌堆中任意選擇一張抽出,直到紙牌被抽完。他們的得分等於他們抽到的紙牌數字總和。現在假設牛牛和羊羊都採用最優策略,請你計算出遊戲結束後牛牛得分減去羊羊得分等於多少。incl...
壓縮演算法 騰訊校招後台開發筆試題
時間限制 c c 2秒,其他語言4秒 空間限制 c c 256m,其他語言512m 小q想要給他的朋友傳送乙個神秘字串,但是他發現字串的過於長了,於是小q發明了一種壓縮演算法對字串中重複的部分進行了壓縮,對於字串中連續的m個相同字串s將會壓縮為 m s m為乙個整數且1 m 100 例如字串abca...