某公司筆試程式設計題

2021-08-27 08:30:11 字數 1961 閱讀 4357

參加了某公司程式設計題,這些題都來自牛客網,記錄總結吧!

一、蛇形矩陣

題目描述

蛇形矩陣是有1開始的自然數依次排列成的乙個上三角矩陣.

介面說明

void getresult(int num, int* presult);

輸入引數:

int num :輸入的正整數n

輸出引數:

int *presult: 指向放蛇形矩陣的字串指標指標指向的記憶體區域保證有效

樣例輸入:

4 樣例輸出:

1 3 6 10

2 5 9

4 8 7分析

由於題目限定了使用int*陣列來儲存資料,我們希望根據樣例找出座標關係。

此時座標矩陣為

0  1  2  3 

4 5 6 7

8 9 10 11

12 13 14 15

我們根據蛇形矩陣的特點,依次得出每次內迴圈的座標:

0

4 18 5 2

12 9 6 3

比如當現在位於第3行,第一列時,對應絕對座標為(i-j)*n +j-1 = (3-1)*4+1-1=9,那麼要得到下乙個座標時,我們只需讓絕對座標整體減少一行即可:9-4=5=(3-2)*4+1-1,此時也對應了內迴圈中j的自增。

**:

#include

#include

using

namespace

std;

void getresult(int num, int * presult)

cout

cout

<< endl;

}delete ret;

} return

0;}

該方法空間複雜度為o(n*n),並不是最好的辦法,後期可以優化。

二、字串旋轉

題目描述

對於乙個字串,和字串中的某一位置,請設計乙個演算法,將包括i位置在內的左側部分移動到右邊,將右側部分移動到左邊。

給定字串a和它的長度n以及特定位置p,請返回旋轉後的結果。

測試樣例:

"abcdefgh",8,4

返回:"fghabcde"

方法一:

迴圈移位,每次迴圈右移乙個字元,將最後乙個字元放到字元開頭。共移動p次。

方法二:

利用字串的方法substr() 左右切割,然後組合即可。

標準庫的string有乙個substr函式用來擷取子字串。一般使用時傳入兩個引數,第乙個是開始的座標(第乙個字元是0),第二個是擷取的長度。

**:

#include

#include

using

namespace

std;

string rotatestring(string a, int n, int p)

a[0] = ch;

}s = a;

return s;

}string rotatestring1(string str, int n, int p)

int main()

三、字串求子串次數。

題目描述

求子串在母串中出現的次數。

測試樣例:

輸入aaaaaa

aa返回:3

**:

#include

#include

using

namespace

std;

int main()

else

}cout

0;}

筆試 程式設計題

1.class a class b public a int main 2.int main 3.int func int a int main little endian int main char p char a 2 printf 0x x,0x x,0x x p 1 p,short p re...

騰訊筆試程式設計題

題目需求 對於乙個十進位制的正整數,定義f n 為其各位數字的平方和,如 f 13 1 2 3 2 10 f 207 2 2 0 2 7 2 53 下面給出三個正整數k,a,b,你需要計算有多少個正整數n滿足a n b,且k f n n 輸入 第一行包含3個正整數k,a,b,k 1,a,b 10 1...

浪潮筆試程式設計題

有乙個長度為n的01串。現在要找出這個串的最長的01交替子串行 不需要是連續的 比如,和 都是01交替序列,但是 和 不是。可以對該串的某一段連續的字元進行反轉。即把某一段中的,問經過修改之後最大長度的01交替子串行是多少?include include include include using ...