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