參加了某公司程式設計題,這些題都來自牛客網,記錄總結吧!一、蛇形矩陣
題目描述
蛇形矩陣是有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 ...