1.字串編碼
輸入描述:
每個測試輸入包含1個測試用例每個測試用例輸入只有一行字串,字串只包括大寫英文本母,長度不超過10000。
輸出描述:
輸出編碼後的字串
輸入例子:
aaaabccdaa
輸出例子:
4a1b2c1d2a
思路分析:這道題好像以前是一家企業的面試題,leetcode easy級別,思路弄清楚,10分鐘ac。
#include #include #include using namespace std;
string num = "0123456789";
string inttostring( int n )
return str;
}string solve( string str )
else if( str[j] != cur )
}if( j == len )
}return ans;
}int main()
return 0;
}
2.最大和
輸入描述:
每個測試輸入包含1個測試用例,第一行包括兩個整數 n 和 d :3 <= n <= 100
1 <= d <= n
接下來有n行,每行n個數字d:
0 <= d <= 100
輸出描述:
輸出乙個整數,表示找到的和的最大值
輸入例子:
4 287 98 79 61
10 27 95 70
20 64 73 29
71 65 15 0
輸出例子:
193
思路分析:這道題資料量比較小,只有100,所以暴力列舉即可(注意要搞清楚邏輯再寫,寫40多分鐘都有可能的)。另外可以用dp的想法,維護字首和。
#include #define max 100 + 10
int max = 0;
bool check1( int x, int y, int d, int n )
bool check2( int x, int y, int d, int n )
int main()
}// 先從每行開始找
for( int row = 1; row <= n; row++ )
if( sum > max ) max = sum;
//printf( "%d\n", sum );}}
// 再從每列開始找
for( int col = 1; col <= n; col++ )
if( sum > max ) max = sum;
//printf( "%d\n", sum );}}
// 再從左上到右下對角線開始找
for( int i = 1; i <= n; i++ )
//printf( "%d\n", sum );
if( sum > max ) max = sum;}}
}// 再從右上到左下對角線開始找
for( int i = 1; i <= n; i++ )
if( sum > max ) max = sum;
//printf( "%d\n", sum );}}
}printf( "%d\n", max );
}return 0;
}
3.推箱子
大家一定玩過「推箱子」這個經典的遊戲。具體規則就是在乙個n*m的地圖上,有1個玩家、1個箱子、1個目的地以及若干障礙,其餘是空地。玩家可以往上下左右4個方向移動,但是不能移動出地圖或者移動到障礙裡去。如果往這個方向移動推到了箱子,箱子也會按這個方向移動一格,當然,箱子也不能被推出地圖或推到障礙裡。當箱子被推到目的地以後,遊戲目標達成。現在告訴你遊戲開始是初始的地圖布局,請你求出玩家最少需要移動多少步才能夠將遊戲目標達成。
輸入描述:
每個測試輸入包含1個測試用例第一行輸入兩個數字n,m表示地圖的大小。其中0輸出描述:
輸出乙個數字表示玩家最少需要移動多少步才能將遊戲目標達成。當無論如何達成不了的時候,輸出-1。
輸入例子:
4 4....
..*@
....
.x..
6 6...#..
......
#*##..
..##.#
..x...
.@#...
輸出例子:
311
思路分析:考查搜尋。但是我當時沒寫出來,這道題只過了3個測試點。說一下別人的思路:
1.dfs,不知道他怎麼寫的,判斷條件應該比較複雜吧。
2.bfs,四維bfs,增加兩個維度代表箱子的位置(我當時考試只想到三維了,沒想到四維,豁然開朗。。下去再練練)
去年有一道也是推箱子,不過那個是純模擬,簡單一點。有興趣的可以在hihocoder上看一下。
(**暫時沒有)
4.賽馬
在一條無限長的跑道上,有n匹馬在不同的位置上出發開始賽馬。當開始賽馬比賽後,所有的馬開始以自己的速度一直勻速前進。每匹馬的速度都不一樣,且全部是同樣的均勻隨機分布。在比賽中當某匹馬追上了前面的某匹馬時,被追上的馬就出局。 請問按以上的規則比賽無限長的時間後,賽道上剩餘的馬匹數量的數學期望是多少
輸入描述:
每個測試輸入包含1個測試用例輸入只有一行,乙個正整數n
1 <= n <= 1000
輸出描述:
輸出乙個浮點數,精確到小數點後四位數字,表示剩餘馬匹數量的數學期望
輸入例子:
12
輸出例子:
1.00001.5000
思路分析:題目看上去有點費解,個人更感覺像是一道智力題。我們假設有n匹馬賽跑,最後剩下的那個是冠軍。注意題目中說每個馬的速度不一樣,這就說明最後只會剩下乙個馬,不可能出現並列的情況。另外數學期望的意思就是如果這匹馬的編號是i,那p(i)表示i是冠軍的概率,就是數學期望。可以這樣想一下:如果只有一匹馬,那麼這匹馬肯定是冠軍,數學期望顯然是1。如果有兩匹馬,那麼某一匹馬是冠軍的概率是0.5,某一時刻其中乙個馬被淘汰了,那麼另乙個馬的數學期望變成1,相加就是1.5。依次類推,如果剛開始有n匹馬,p(i) = 1 / n,某一時刻p(i) = 1 / (n - 1)、1/(n - 2)......所以這道題的答案就是計算1 + 1 / 2 + 1 / 3 + 1 / 4 + ... + 1 / n的和,就是調和級數。
另外見群裡有acm大神說根據某某定理,先打個表,然後高精度運算得出結果,沒聽懂他的做法。我感覺調和級數這個還是好理解的。
#include int main()
printf( "%.4lf\n", sum );
}return 0;
}
2017網易遊戲雷火盤古實習生招聘筆試真題
1.給定乙個字串,請你將字串重新編碼,將連續的字元替換成 連續出現的個數 字元 比如字串aaaabccdaa會被編碼成4a1b2c1d2a。include include char s 10004 int main tem s i cot 1 else cot printf d c cot,tem ...
2017網易遊戲雷火盤古實習生招聘筆試真題 推箱子
2018.3.19 此題我用了廣度優先搜尋 bfs 的方法.廣度優先搜尋不僅僅可以使用在圖的遍歷中,而且可以用於求解複雜問題的最優解。本題就是利用bfs的經典題目,首先來分析這個問題 查詢空間 所有 0,0,0 到點 a 1,b 1,c 1 合法的行走路徑 查詢目標 找到通往出口的最短路徑 查詢方法...
2017網易雷火盤古實習生招聘試題 硬幣反轉
今天聽說cao參加了網易雷火盤古的招聘,做了幾道程式設計題。據他本人的描述,第一道題是這樣的 第一行輸入兩個數字n和m,表示現在有n個硬幣,需要反轉m次。初始所有硬幣都預設為正面,用0表示,反面則用1表示。求經過一系列操作之後的硬幣正反排列。根據cao本人的說法,輸入輸出樣例是這樣的 感覺比較簡單....