C語(yǔ)言游戲開(kāi)發(fā)筆試題
C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。下面是小編搜集的C語(yǔ)言游戲開(kāi)發(fā)筆試題,歡迎大家閱讀。
C語(yǔ)言游戲開(kāi)發(fā)筆試題一
1、請(qǐng)寫代碼打印100之內(nèi)的素?cái)?shù),講求效率(請(qǐng)做你的解法的效率分析)
2、求m,n的最大公約數(shù)
3、輸入10個(gè)字符串,打印出其中重復(fù)的字符串以及重復(fù)的次數(shù)
4、請(qǐng)畫圖例(UML最好),給出windows下的文件目錄的設(shè)計(jì)模式
5、用OO表示狼吃羊羊吃草
問(wèn)答題:
1、什么是subversion?它與vss,cvs的區(qū)別在哪?或者有什么優(yōu)勢(shì)?
2、什么是wiki,關(guān)于程序項(xiàng)目的wiki你使用過(guò)哪些?wiki對(duì)你有什么幫助嗎?wiki與程序文擋的差別在哪?
3、什么是tdd?你使用過(guò)嗎?tdd的關(guān)鍵在哪?跟傳統(tǒng)的單元測(cè)試相比,有什么優(yōu)越性?
4、什么是單元測(cè)試?你用過(guò)哪些單元測(cè)試工具?他們的區(qū)別和好處各有哪些?你主要傾向于哪一種?
5、什么是編程規(guī)范?你傾向于什么樣的規(guī)范?他的好處在哪?
6、什么是mfc?你經(jīng)常使用那些mfc類?那么為什么很多人不主張使用mfc?
C語(yǔ)言游戲開(kāi)發(fā)筆試題二
1、村子中有50個(gè)人,每人有一條狗。在這50條狗中有病狗(這種病不會(huì)傳染)。于是人們就要找出病狗。每個(gè)人可以觀察其他的49條狗,以判斷它們是否生病,只有自己的狗不能看。觀察后得到的結(jié)果不得交流,也不能通知病狗的.主人。主人一旦推算出自己家的是病狗就要槍斃自己的狗,而且每個(gè)人只有權(quán)利槍斃自己的狗,沒(méi)有權(quán)利打死其他人的狗。第一天,第二天都沒(méi)有槍響。到了第三天傳來(lái)一陣槍聲,問(wèn)有幾條病狗,如何推算得出?
2、P先生、Q先生都具有足夠的推理能力。這天,他們正在接受推理面試。
他們知道桌子的抽屜里有如下16張撲克牌:
紅桃 A、Q、4
黑桃 J、8、4、2、7、3
草花 K、Q、5、4、6
方塊 A、5
約翰教授從這16張牌中挑出一張牌來(lái),并把這張牌的點(diǎn)數(shù)告訴P先生,把這張牌的花色告訴Q先生。
這時(shí),約翰教授問(wèn)P先生和Q先生:你們能從已知的點(diǎn)數(shù)或花色中推知這張牌是什么牌嗎?
P先生:“我不知道這張牌。”
Q先生:“我知道你不知道這張牌。”
P先生:“現(xiàn)在我知道這張牌了。”
Q先生:“我也知道了。”3 樓高100層,你有2個(gè)玻璃球,在某一層n層扔下玻璃球會(huì)碎,而低于n層則玻璃球不會(huì)碎。
1)你會(huì)選擇在第幾層扔第一個(gè)玻璃球來(lái)得到最少的嘗試次數(shù)?
2)假如沒(méi)有電梯,每次都要上樓下樓,你會(huì)選擇第幾層扔第一個(gè)玻璃球來(lái)得到最短的路程(爬上爬下的樓層)?
完美世界2017C++游戲開(kāi)發(fā)筆試編程題
第一題
題意:給出一個(gè)序列a,需要找到一對(duì)位置(i, j)(j > i),使得a[j] - a[i]的值盡量大,同時(shí)i盡量大并且j盡量小,如果任意a[j] - a[i]都<=0,則輸出-1,-1。
題解:從1到n掃一遍序列處理即可,i盡量大用>=,j盡量小用>即可。
代碼:
#include
#include
using namespace std;
#define maxn (1000000)
int a[maxn], prei[maxn];
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
prei[i] = -1;
}
int g = -1;
for(int i = 0; i < n; i++)
{
if(g == -1 || a[i] <= a[g]) g = i;
if(a[g] < a[i+1]) prei[i+1] = g;
}
int d = 0, o = -1;
for(int i = 1; i < n; i++) if(prei[i] != -1)
{
if(a[i] - a[prei[i]] > d)
{
d = a[i] - a[prei[i]];
o = i;
}
}
if(o == -1) cout << -1 << "," << -1 << endl;
else cout << prei[o] << "," << o << endl;
return 0;
}
第二題
題意:給出一個(gè)序列,玩家需要跟boss進(jìn)行博弈,玩家先手。每次只能從序列頭或尾取一個(gè)值加到自己的得分上,玩家和boss都很聰明,求玩家和boss的最終得分。
題解:可以發(fā)現(xiàn)總分不是很大,可以記憶化搜索。d[i][j]表示當(dāng)拿到的序列為a[i, j]時(shí),從中的最高得分。轉(zhuǎn)移方程是d[i][j] = max(a[i] + d[i+1][j], d[i][j-1] + a[j]),向下遞歸并且記錄d[i][j]是否已得到即可(應(yīng)該算是區(qū)間dp?)。
代碼:
#include
#include
using namespace std;
#define maxn (111)
int a[maxn], d[maxn][maxn], vis[maxn][maxn], sum;
void dp(int l, int r, int tot)
{
if(vis[l][r]) return ;
if(l == r) { d[l][r] = a[l]; vis[l][r] = 1; return; }
dp(l + 1, r, tot - a[l]); dp(l, r - 1, tot - a[r]);
d[l][r] = max(tot - d[l + 1][r], tot - d[l][r - 1]);
vis[l][r] = 1;
}
int main()
{
int N;
cin >> N;
for(int i = 1; i <= N; i++)
{
scanf("%d", &a[i]);
sum += a[i];
}
dp(1, N, sum);
cout << d[1][N] << " " << sum - d[1][N] << endl;
return 0;
}
【C語(yǔ)言游戲開(kāi)發(fā)筆試題】相關(guān)文章:
C語(yǔ)言開(kāi)發(fā)工程師選擇試題11-23
嵌入式開(kāi)發(fā)—C語(yǔ)言面試題08-17
C語(yǔ)言基礎(chǔ)筆試題11-24
C語(yǔ)言筆試題集錦11-24
外企C語(yǔ)言筆試題11-23
C語(yǔ)言筆試題回憶11-23
C語(yǔ)言筆試題總結(jié)11-23
c語(yǔ)言常見(jiàn)筆試題總結(jié)11-23
C語(yǔ)言常用筆試題11-23