2016蘭亭校招C++
這個是我這個菜鳥筆試遇到的程式設計題,感覺有點像動態劃分,當時沒做出來。。。非常慚愧~
寫出來,慢慢積累吧~~
輸出n位的整數,使整數中相鄰的兩位整數數字差的絕對值大於等於4。輸出所有滿足此條件的整數。
例如:輸入:n=5; 輸出:37051,38051,39051,…
思考:首先第一位是1~9這9個數字中選擇,其餘的n-1位從0~9選擇。
我的想法是,先確定第一位數,然後依據條件確定第二位,再依據第二位的數值,確定第三位…以此類推~
實際上就是一個遞迴的運算,這裡,遞迴結束的條件為:n個整數均已選好。
看程式,時間複雜度有些高,望前輩們指教~
#include<iostream>
#include<vector>
using namespace std;
static vector<int> v_ans;
void FindInteger(int pre_int,int n)
{
if (v_ans.size() > n)
return;
if (v_ans.size() == n)
{
for (vector<int>::iterator it = v_ans.begin(); it != v_ans.end(); it++)
{
cout << *it;
}
cout << endl;
}
for (int i = 0; i <= 9; i++)
{
if (abs(i - pre_int) >= 4)
{
v_ans.push_back(i);
FindInteger(v_ans.back(),n);
v_ans.pop_back();
}
}
}
int main()
{
cout << "please intput n:" << endl;//你想輸出幾位數
int N;
cin >> N;
for (int i = 1; i <= 9; ++i)
{
v_ans.resize(1);
v_ans[0] = i;
FindInteger(v_ans.back(),N);
}
system("pause");
return 0;
}
在做這個題目的時候,需要清楚vector容器的使用,剛開始在初始化v_ans的時候,就是給整數的第一位賦值的時候,直接使用了v_ans[0]=i;執行時總是崩潰,後來才 知道使用索引[]操作符對vecor操作,不會自動申請記憶體空間,則要手動用resize函式來申請空間(這是參考的別人的部落格的結論)。
相關文章
- 2016騰訊校招面試分享面試
- 2016年美的校招面試面試
- Java秋招校招面試Java面試
- 2013搜狗校招研發類C/C++試題C++
- 愛奇藝校招面試題面試題
- 校招前的思考
- 2016校招,Android開發,常見面試問題彙總Android面試
- 最近校招面試記錄面試
- 蘭亭集勢財報:2016年Q3蘭亭集勢淨營收6440萬美元 同比下滑8.3%營收
- EMC校招筆試題目筆試
- 校招前端面試知識大全前端面試
- 校招演算法崗麵筋演算法
- 前端校招面試該考察什麼?前端面試
- 如何準備校招技術面試面試
- Teambition X 2019 校招
- 【小米集團校園招聘】軟體開發工程師-C/C++ 方向 (急招)工程師C++
- [小米集團校園招聘] 軟體開發工程師-C/C++ 方向 (急招)工程師C++
- 大廠前端校招 - 知識體系前端
- 校招面試心得看得再多也沒用面試
- 2018前端校招總結前端
- 【校招/社招】面試位元組,寫了一份硬核簡歷!面試
- 2016年百度校招小結:我做技術面試官的一些思考面試
- 【小米集團未來星校招】射頻器件工程師 (急招)工程師
- 【小米集團未來星校招】電磁相容工程師 (急招)工程師
- [小米集團未來星校招] 電磁相容工程師 (急招)工程師
- [小米集團未來星校招] 射頻器件工程師 (急招)工程師
- 【小米集團未來星校招】NLP 演算法研究員 (急招)演算法
- 【小米集團未來星校招】機器翻譯研究員 (急招)
- 【小米集團未來星校招】知識圖譜研究員 (急招)
- [小米集團未來星校招] NLP 演算法研究員 (急招)演算法
- [小米集團未來星校招] 機器翻譯研究員 (急招)
- [小米集團未來星校招] 知識圖譜研究員 (急招)
- 回憶一次美團Android校招Android
- 【程式設計測試題】頭條校招程式設計
- 普通人的校招經驗總結
- 【小米集團未來星校招】語音演算法研究員 (急招)演算法
- 【小米集團未來星校招】對話演算法研究員 (急招)演算法
- [小米集團未來星校招] 語音演算法研究員 (急招)演算法