網易游戲游戲開發工程師
網易游戲,武漢筆試,游戲開發工程師
1.一次考試,有25人參加,有ABC三題,每人至少會做一題,在不會做A的人中,會做B的人是會做C的人的兩倍,在會做A的人中,只會做A的人比其他的少一人,不會做A的人和只會做A的人數相等,問只會做B的有幾人?
解:設綠色加白色為X 紫色加白色為X/2 白色為Z 紅色為Y 藍色為Y+1
所以由條件可得X+0.5X-Z+2Y+1=25 X+0.5X-Z=Y 故3X=16+2Z 當且僅當Z=4,X=8時為整數解,故題目答案為X-Z=4人或以下三組解: Z=1,X=6; Z=7,X=10; Z=10,X=12;
2.李氏夫婦請4對夫婦來家吃飯,已知每人不和自己和配偶握手,每人至少握手一次,不重復和人握手,李先生最后一問每人握手次數都不一樣,問李太太握手幾次...
解:既然每人次數不同,就說明有1到8八種次數,每人一種.
初始:87 65 43 21 (00) 括號內為李氏夫婦的次數
從8看起,那個人肯定和另外的8人握手,否則沒有8次,而且他的配偶肯定是7次,否則不可能有8次握手的人.(X表示已計算的握手)
第一次:X7 54 32 10 (11)
第二次:XX 43 21 00 (22)
第三次:XX X3 10 00 (33)
第四次:XX XX 00 00 (44)
所以李先生和李太太都握手了4次.
3.幾何題如圖,兩圓交于AB兩點,由A作直線交于兩圓于CD,問CD何時最長?并證明.提示:相同弧段的圓周角是圓心角一半
感謝影子情人提供解法…
答案是讓AB和CD垂直,這樣BD和CB是兩個直角三角形的斜邊…提示可知道是直徑…得整….
4.假設一副撲克牌只有A,2,3,4,5,6六張,且每張有任意多張,沒有不同花型(即沒有桃心梅方),用PQRST表示不同的牌面,計算下列概率,并排順序
PQRST,PPQRS,PPQQR,PPPQR,PPPPR,PPPPP,PPPQQ
大概解法:概率里面的什么分子分母實在懶得打,我還用幾次方和階乘表示了相對關系,這樣比較容易看,不要用大學的概率統計公式,直接用高中生想法,很容易求解.
注意,每種牌的數量不限制,所以去除某種特定牌的概率是1/6,但是取出第一張任意牌的概率是6/6,同理第二張不同牌的概率是5/6,所以第一個概率是6!/6^5然后乘以6,因為有六種取法,C65嘛等于C61,也就是6!/6^4
后面的也差不多,順便說一下,5張一樣的好難啊,竟然只有6/6^5,也就是1/1296,呵呵,要珍惜炸彈啊.然后乘以C61,也就是6/6^4
5已知二叉樹的先序和中序遍歷字符串,編程實現輸出后序遍歷字符串,如果沒有成功輸出Failed,最后分析時間和空間復雜度
解:這是標準的ACM 2255題,NOIp和NOI中也有一樣的題目,很經典的.我也提供一下網上的標準答案,懶得打了.時間復雜度是2的n次方吧…我感覺是的,沒有空間消耗,除了棧的開辟消耗空間.
#include <string>
using namespace std;
void PrintPostOrder(const string & preorder, const string & inorder,
int start1, int start2, int size){
if(size == 1)
{
cout << preorder[start1];
return;
}
if(size == 0)
return;
int i = inorder.find(preorder[start1]);
PrintPostOrder(preorder, inorder, start1+1, start2, i-start2);
PrintPostOrder(preorder, inorder, start1+1+i-start2, start2+1+i-start2, size-i+start2-1);
cout << preorder[start1];
}
int main(void)
{
string preorder, inorder;
while(cin >> preorder >> inorder)
{
PrintPostOrder(preorder, inorder, 0, 0, preorder.size());
cout << endl;
}
}