1. 程式人生 > >2016騰訊實習生線上筆試

2016騰訊實習生線上筆試

第二道是給一個非負整數,輸出n為邊長的蛇形矩陣。按照先行後列的順序輸出即可。
比如:
給一個3,3的蛇形矩陣是
[
[1,2,3],
[8,9,4],
[7,6,5]
]

那麼輸出的就是1 2 3 8 9 4
思路:先構造這個蛇形矩陣,完事兒再直接輸出即可。

#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> generateMatrix(int n) {
    vector
<vector<int> >
res(n,vector<int>(n,0)); if(!n) return res; int i = 0; int colBegin = 0; int colEnd = n - 1; int rowBegin = 0; int rowEnd = n - 1; while(colBegin <= colEnd && rowBegin <= rowEnd){ for(int c = colBegin;c <= colEnd;++c){ res[rowBegin][c] = ++i; } ++rowBegin; for
(int r = rowBegin;r <= rowEnd;++r){ res[r][colEnd] = ++i; } --colEnd; if(rowBegin <= rowEnd){ for(int c = colEnd;c >= colBegin;--c){ res[rowEnd][c] = ++i; } } --rowEnd; if(colBegin <= colEnd){ for
(int r = rowEnd;r >= rowBegin;--r){ res[r][colBegin] = ++i; } } ++colBegin; } return res; } int main(){ int n; cin >> n; vector<vector<int>> res = generateMatrix(n); for(int i= 0;i < n;++ i){ for(int j = 0;j < n;++ j){ if(i == n - 1 && j == n - 1){ cout << res[i][j]; break; } cout << res[i][j] << ' '; } } return 0; }

第三道是求一個字串裡最長的非連續迴文序列的長度。
比如 “cabbeaf”,你把c e f 去掉之後得到一個迴文序列 abba。那麼輸出長度4即可。

思路:翻轉下這個字串,然後求翻轉字串和原字串的最長公共子序列即可。

第四道是說一說 stack 和 heap的區別。

為什麼我沒說第一道呢?因為我資料庫還沒開始看。。。。悲催了

能不能面試就看天意了。