日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网易游戏2011.10.15校园招聘会笔试题

發布時間:2024/9/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网易游戏2011.10.15校园招聘会笔试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/hackbuteer1/article/details/6878570

1、對于一個內存地址是32位、內存頁是8KB的系統。0X0005F123這個地址的頁號與頁內偏移分別是多少。

頁面大小是8KB,那么頁內偏移量是從0x0000(0)~ 0x1FFF(2的13次方 - 1)。0x5F123/8K=2E,余數是1123;則頁號是47頁,頁內偏移量應該是0X00001123。

2、如果X大于0并小于65536,用移位法計算X乘以255的值為:????(X<<8)-X

X<<8-X是不對的,因為移位運算符的優先級沒有減號的優先級高,首先計算8-X為0,X左移0位還是8。

3、一個包含n個節點的四叉樹,每個節點都有四個指向孩子節點的指針,這4n個指針中有???3n+1?? 個空指針。

4、以下兩個語句的區別是:第一個動態申請的空間里面的值是隨機值,第二個進行了初始化,里面的值為0

[cpp]?view plaincopy
  • int?*p1?=?new?int[10];??
  • int?*p2?=?new?int[10]();??
  • 5、計算機在內存中存儲數據時使用了大、小端模式,請分別寫出A=0X123456在不同情況下的首字節是,大端模式:0X12????????? ?小端模式:0X56?????????? X86結構的計算機使用??小端??? 模式。

    一般來說,大部分用戶的操作系統(如windows, FreeBsd,Linux)是小端模式的。少部分,如MAC OS,是大端模式 的。

    6、在游戲設計中,經常會根據不同的游戲狀態調用不同的函數,我們可以通過函數指針來實現這一功能,請聲明一個參數為int *,返回值為int的函數指針:

    int (*fun)(int *)

    7、下面程序運行后的結果為:to test something

    [cpp]?view plaincopy
  • char?str[]?=?"glad?to?test?something";??
  • ????char?*p?=?str;??
  • ????p++;??
  • ????int?*p1?=?static_cast<int?*>(p);??
  • ????p1++;??
  • ????p?=?static_cast<char?*>(p1);??
  • ????printf("result?is?%s\n",p);??
  • 8、在一冒險游戲里,你見到一個寶箱,身上有N把鑰匙,其中一把可以打開寶箱,假如沒有任何提示,隨機嘗試,問:

    (1)恰好第K次(1=<K<=N)打開寶箱的概率是多少。??(1-1/n)*(1-1/(n-1))*(1-1/(n-2))***(1/(n-k+1)) = 1/n

    (2)平均需要嘗試多少次。

    ?這個就是求期望值?? 由于每次打開寶箱的概率都是1/n,則期望值為:?? 1*(1/n)+2*(1/n)+3*(1/n)+......+n*(1/n) = (n+1)/2

    9、頭文件中ifndef / define / endif 是做什么用的?
    10、代碼里有時可以看到extern “C”,這語句是做什么用的?
    11、平均要取多少個(0,1)中的隨機數才能讓和超過1。?

    12、在下列乘法算式中,每個字母代表0~9的一個數字,而且不同的字母代表不同的數字:

    ?ABCDEFGH

    *?????????????? ??AJ

    ------------------

    EJAHFDGKC

    BDFHAJEC

    ------------------

    CCCCCCCCC

    請寫出推導的過程。

    本題唯一解為:A=2、B=4、C=6、D=9、E=1、F=3、G=5、H=8、J=7、K=0

    13、輸入格式:第一行輸入N(N<=100)表示流通的紙幣面額數量;第二行N個紙幣的具體表示的面額,從小到大排列,取值【1,10^6】。
    輸出格式:輸出一個整數,表示應該發行的紙幣面額,這個整數是已經發行的所有紙幣面額都無法表示的最小整數。(已經發行的每個紙幣面額最多只能使用一次)

    輸入

    輸出

    5

    1 2 3 9 100

    7

    5

    1 2 4 9 100

    8

    5

    1 2 4 7 100

    15

    思路:這是一個典型的母函數問題,一般的典型母函數如 G(x)= ?(1+x+x^2+x^3+x^4+x^5+....)*(1+x^2+x^4+x^6+x^8+x^10+....)*(1+x^3+x^6+x^9+x^12....).....

    這個題目中的每個紙幣只能夠使用0次或1次,在上面的那個一般的母函數的基礎上修改一下就行了,就很簡單了。。

    具體代碼如下:

    [cpp]?view plaincopy
  • #include?<iostream>??
  • using?namespace?std;??
  • ??
  • const?int?lmax=10000;??
  • int?c1[lmax+1],c2[lmax+1];??
  • ??
  • int?main(void)??
  • {??
  • ????int?m,n,i,j,k,a[110];??
  • ????//計算的方法還是模擬手動運算,一個括號一個括號的計算,從前往后??
  • ????while?(cin>>m?&&?m)??
  • ????{??
  • ????????n=0;??
  • ????????for(i?=?0;?i?<?m;?i++)??
  • ????????{??
  • ????????????scanf("%d",&a[i]);??
  • ????????????n?+=?a[i];??
  • ????????}??
  • ????????n?+=?5;?????//有可能無法表示的那個數比所有紙幣面額的總和還要大??
  • ????????for(i?=?0;?i?<=?n;?i++)??
  • ????????{??
  • ????????????c1[i]?=?0;??
  • ????????????c2[i]?=?0;??
  • ????????}??
  • ????????for(i?=?0;?i?<?2*a[0];?i?+=?a[0])????????//母函數的表達式中第一個括號內的各項系數??
  • ????????????c1[i]?=?1;??
  • ????????//第一層循環是一共有?n?個小括號,而剛才已經算過一個了,所以是從2?到?n???
  • ????????//?i?就是代表的母函數中第幾個大括號中的表達式??
  • ????????for(i?=?2;?i?<=?m;?i++)??
  • ????????{??
  • ????????????for(j?=?0;?j?<=?n;?j++)??????????????//j?就是指的已經計算出的各項的系數??
  • ????????????{??
  • ????????????????for?(k?=?0;?k?<?2*a[i-1];?k?+=?a[i-1])??????//k?就是指將要計算的那個括號中的項//要是擴展為可以用多張相同的錢,但是錢的數量有限制,設同一種錢的數量是t,則(t+1)*a[i-1]??
  • ????????????????{???
  • ????????????????????c2[j+k]?+=?c1[j];????????//合并同類項,他們的系數要加在一起,所以是加法??
  • ????????????????}??
  • ????????????}??
  • ????????????for(j?=?0;?j?<=?n;?j++)????//?刷新一下數據,繼續下一次計算,就是下一個括號里面的每一項??
  • ????????????{??
  • ????????????????c1[j]?=?c2[j];??
  • ????????????????c2[j]?=?0;??
  • ????????????}??
  • ????????}??
  • ????????for(i?=?1;?i?<=?n;?i++)??
  • ????????{??
  • ????????????if(c1[i]?==?0)??
  • ????????????{??
  • ????????????????cout<<i<<endl;??????//找出第一個無法表示的紙幣面額??
  • ????????????????break;??
  • ????????????}??
  • ????????}??
  • ????}??
  • ????return?0;??
  • }??
  • 這個題目我認為可以用背包的思想解決,沒有必要用到母函數。

    至于是否正確,以后再驗證

    先對錢幣從小到大排序,然后再插入一個元素,大小是所有元素之和再加1.
    for i =1 ; i<n; ++i
    ? ? for (int v = money[i+1]-1; ?v> = money[i]; --v)
    ? ? ? ? ? ?if !dp[v]
    ? ? ? ? ? ? ? ?if dp[v-money[ i]]
    ? ? ? ? ? ? ? ? ? ?dp[v] = true
    ? ? ? ? ? ? ? ?else
    ? ? ? ? ? ? ? ? ? ? 可能有結果?

    關于母函數的闡述http://www.wutianqi.com/?p=596

    母函數(Generating function)詳解

    —?Tanky Woo

    在數學中,某個序列的母函數(Generating function,又稱生成函數)是一種形式冪級數,其每一項的系數可以提供關于這個序列的信息。使用母函數解決問題的方法稱為母函數方法

    母函數可分為很多種,包括普通母函數、指數母函數L級數、貝爾級數狄利克雷級數。對每個序列都可以寫出以上每個類型的一個母函數。構造母函數的目的一般是為了解決某個特定的問題,因此選用何種母函數視乎序列本身的特性和問題的類型。

    ?

    這里先給出兩句話,不懂的可以等看完這篇文章再回過頭來看:

    1.“把組合問題的加法法則和冪級數的乘冪對應起來”

    2.“母函數的思想很簡單 — 就是把離散數列和冪級數一 一對應起來,把離散數列間的相互結合關系對應成為冪級數間的運算關系,最后由冪級數形式來確定離散數列的構造. “

    ?

    我們首先來看下這個多項式乘法:

    母函數圖(1)

    由此可以看出:

    1.x的系數是a1,a2,…an 的單個組合的全體。

    2. x^2的系數是a1,a2,…a2的兩個組合的全體。

    ………

    n. x^n的系數是a1,a2,….an的n個組合的全體(只有1個)。

    ?

    進一步得到:

    母函數圖(2)

    ?

    母函數的定義

    對于序列a0,a1,a2,…構造一函數:

    母函數圖(3)

    稱函數G(x)是序列a0,a1,a2,…的母函數。

    ?

    這里先給出2個例子,等會再結合題目分析:

    ?

    第一種:

    有1克、2克、3克、4克的砝碼各一枚,能稱出哪幾種重量?每種重量各有幾種可能方案?

    考慮用母函數來解決這個問題:

    我們假設x表示砝碼,x的指數表示砝碼的重量,這樣:

    1個1克的砝碼可以用函數1+1*x^1表示,

    1個2克的砝碼可以用函數1+1*x^2表示,

    1個3克的砝碼可以用函數1+1*x^3表示,

    1個4克的砝碼可以用函數1+1*x^4表示,

    上面這四個式子懂嗎?

    我們拿1+x^2來說,前面已經說過,x表示砝碼,x的指數表示砝碼的重量!初始狀態時,這里就是一個質量為2的砝碼。

    那么前面的1表示什么?按照上面的理解,1其實應該寫為:1*x^0,即1代表重量為2的砝碼數量為0個。

    所以這里1+1*x^2 = 1*x^0 + 1*x^2,即表示2克的砝碼有兩種狀態,不取或取,不取則為1*x^0,取則為1*x^2

    ?

    不知道大家理解沒,我們這里結合前面那句話:

    把組合問題的加法法則和冪級數的乘冪對應起來

    ?

    接著討論上面的1+x^2,這里x前面的系數有什么意義?

    這里的系數表示狀態數(方案數)

    1+x^2,也就是1*x^0 + 1*x^2,也就是上面說的不取2克砝碼,此時有1種狀態;或者取2克砝碼,此時也有1種狀態。(分析!)

    ?

    所以,前面說的那句話的意義大家可以理解了吧?

    幾種砝碼的組合可以稱重的情況,可以用以上幾個函數的乘積表示:

    (1+x)(1+x^2)(1+x^3)(1+x^4)

    =(1+x+x^2+x^4)(1+x^3+^4+x^7)

    =1 + x + x^2 + 2*x^3 + 2*x^4 + 2*x^5 + 2*x^6 + 2*x^7 + x^8 + x^9 + x^10

    從上面的函數知道:可稱出從1克到10克,系數便是方案數。(!!!經典!!!)

    例如右端有2^x^5 項,即稱出5克的方案有2種:5=3+2=4+1;同樣,6=1+2+3=4+2;10=1+2+3+4。

    故稱出6克的方案數有2種,稱出10克的方案數有1種 。


    接著上面,接下來是第二種情況:

    ?

    第二種:

    求用1分、2分、3分的郵票貼出不同數值的方案數:

    大家把這種情況和第一種比較有何區別?第一種每種是一個,而這里每種是無限的。

    母函數圖(4)

    ?

    以展開后的x^4為例,其系數為4,即4拆分成1、2、3之和的拆分方案數為4;

    即 :4=1+1+1+1=1+1+2=1+3=2+2

    ?

    這里再引出兩個概念"整數拆分"和"拆分數":

    所謂整數拆分即把整數分解成若干整數的和(相當于把n個無區別的球放到n個無標志的盒子,盒子允許空,也允許放多于一個球)。

    整數拆分成若干整數的和,辦法不一,不同拆分法的總數叫做拆分數。

    ?

    ?

    現在以上面的第二種情況每種種類個數無限為例,給出模板


    ?

    #include <iostream> using namespace std; // Author: Tanky Woo // www.wutianqi.com const int _max = 10001; // c1是保存各項質量砝碼可以組合的數目 // c2是中間量,保存沒一次的情況 int c1[_max], c2[_max]; int main() { //int n,i,j,k;int nNum; // int i, j, k;while(cin >> nNum){for(i=0; i<=nNum; ++i) // ---- ①{c1[i] = 1;c2[i] = 0;}for(i=2; i<=nNum; ++i) // ----- ②{for(j=0; j<=nNum; ++j) // ----- ③for(k=0; k+j<=nNum; k+=i) // ---- ④{c2[j+k] += c1[j];}for(j=0; j<=nNum; ++j) // ---- ⑤{c1[j] = c2[j];c2[j] = 0;}}cout << c1[nNum] << endl;}return 0; }

    ?

    我們來解釋下上面標志的各個地方:(***********!!!重點!!!***********)

    ①? 、首先對c1初始化,由第一個表達式(1+x+x^2+..x^n)初始化,把質量從0到n的所有砝碼都初始化為1.

    ②? 、 i從2到n遍歷,這里i就是指第i個表達式,上面給出的第二種母函數關系式里,每一個括號括起來的就是一個表達式。

    ③、j 從0到n遍歷,這里j就是(前面i個表達式累乘的表達式)里第j個變量,(這里感謝一下seagg朋友給我指出的錯誤,大家可以看下留言處的討論)。如(1+x)(1+x^2)(1+x^3),j先指示的是1和x的系數,i=2執行完之后變為

    (1+x+x^2+x^3)(1+x^3),這時候j應該指示的是合并后的第一個括號的四個變量的系數。

    ④ 、 k表示的是第j個指數,所以k每次增i(因為第i個表達式的增量是i)。

    ⑤? 、把c2的值賦給c1,而把c2初始化為0,因為c2每次是從一個表達式中開始的。

    ?


    咱們趕快趁熱打鐵,來幾道題目:

    (相應題目解析均在相應的代碼里分析)

    1.? 題目:http://acm.hdu.edu.cn/showproblem.php?pid=1028

    代碼:http://www.wutianqi.com/?p=587

    這題大家看看簡單不?把上面的模板理解了,這題就是小Case!

    看看這題:

    2.? 題目:http://acm.hdu.edu.cn/showproblem.php?pid=1398

    代碼:http://www.wutianqi.com/?p=590

    要說和前一題的區別,就只需要改2個地方。 在i遍歷表達式時(可以參考我的資料—《母函數詳解》),把i<=nNum改成了i*i<=nNum,其次在k遍歷指數時把k+=i變成了k+=i*i; Ok,說來說去還是套模板~~~

    3.? 題目:http://acm.hdu.edu.cn/showproblem.php?pid=1085

    代碼:http://www.wutianqi.com/?p=592

    這題終于變化了一點,但是萬變不離其中。

    大家好好分析下,結合代碼就會懂了。

    4.? 題目:http://acm.hdu.edu.cn/showproblem.php?pid=1171

    代碼:http://www.wutianqi.com/?p=594

    還有一些題目,大家有時間自己做做:

    HDOJ:1709,1028、1709、1085、1171、1398、2069、2152

    (原創文章,歡迎各位轉載,但是請不要任意刪除文章中鏈接,請自覺尊重文章版權,違法必究,謝謝合作。Tanky Woo原創, www.WuTianQi.com)

    附:

    1.在維基百科里講到了普通母函數、指數母函數、L級數、貝爾級數和狄利克雷級數:

    http://zh.wikipedia.org/zh-tw/%E6%AF%8D%E5%87%BD%E6%95%B0

    2.Matrix67大牛那有篇文章:什么是生成函數:

    http://www.matrix67.com/blog/archives/120

    3.大家可以看看杭電的ACM課件的母函數那篇,我這里的圖片以及一些內容都引至那。


    如果大家有問題或者資料里的內容有錯誤,可以留言給出,博客: http://www.wutianqi.com/

    ?

    Tanky Woo原創文章,轉載請注明出處:http://www.wutianqi.com/?p=596。



    總結

    以上是生活随笔為你收集整理的网易游戏2011.10.15校园招聘会笔试题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。