每日一題(36)

2021-10-01 01:49:21 字數 2302 閱讀 7168

上圖是乙個**的九宮格,如你所見乙個數字對應一些字母,因此在國外企業喜歡把**號碼設計成與自己公司名字相對應。例如公司的help desk號碼是4357,因為4對應h、3對應e、5對應l、7對應p,因此4357就是help。同理,tut-glop就代表888-4567、310-gino代表310-4466。

nowcoder剛進入外企,並不習慣這樣的命名方式,現在給你一串**號碼列表,請你幫他轉換成數字形式的號碼,並去除重複的部分。

輸入描述:

輸入包含多組資料。

每組資料第一行包含乙個正整數n(1≤n≤1024)。

緊接著n行,每行包含乙個**號碼,**號碼僅由連字元「-」、數字和大寫字母組成。

沒有連續出現的連字元,並且排除連字元後長度始終為7(美國**號碼只有7位)。

輸出描述:

對應每一組輸入,按照字典順序輸出不重複的標準數字形式**號碼,即「***-***x」形式。

每個**號碼佔一行,每組資料之後輸出乙個空行作為間隔符。

示例1輸入

124873279

its-easy

888-4567

3-10-10-10

888-glop

tut-glop

967-11-11

310-gino

f101010

888-1200

-4-8-7-3-2-7-9-

487-3279

4utt-help

tut-glop

310-gino

000-1213

輸出310-1010

310-4466

487-3279

888-1200

888-4567

967-1111

000-1213

310-4466

888-4357

888-4567『

分析:先用map將stirng和int 傳進去,再用vector的sort進行排序,最後再輸出。

需要注意的坑 迭代器失效的問題,

#include #include#include #include #include #define max 10000000//是數字的字典序

using namespace std;//計畫有變,有map鍵值對來排序

int cmp(const paira, const pairb) //用於排序的自定義函式

vector> my_sort(map& ipone_real, vector& ipone)

//再根據second排序

//把map的pair放到vector中利用vector的sort排序

vector> ipone_last;

for (auto& e : ipone_real)

sort(ipone_last.begin(), ipone_last.end(), cmp);//對容器進行排序

return ipone_last;

}string change(string& word2)

for (auto& e : word)//對傳入的修改 }

return word;

}int main()

for (auto& e : ipone)

mapipone_real;

vector> ipone_last;

ipone_last = my_sort(ipone_real, ipone);

for (auto& e : ipone_last)

nnew[3] = '-';//加入乙個-可能會導致迭代器失效

e.first = nnew;

cout << e.first << endl;

} cout << endl;

}}

(感覺這個**效率不高,可以用set代替map進行重構)

輸入描述:

每個測試輸入包含2個整數,n和m

輸出描述:

按每個組合的字典序排列輸出,每行輸出一種組合

示例1輸入

5 5輸出

1 42 3

5分析:這道題適合用dfs遞迴求解。剛好這學期算法學過**如下。

#include#includeusing namespace std;

void need(int n, int m, vector& v, int beg)

cout << endl;

} for (int i = beg; i <= n && i <= m; i++)

}int main()

}

每日一題 No 36 AI貪吃蛇(一)

作為乙個一心搞遊戲程式設計師,怎麼可能不寫遊戲呢?今天我就帶大家來寫乙個ai貪吃蛇,讓這條小蛇吃滿螢幕 無 無 無無 c c 學習ai貪吃蛇 一 include include include include include include using namespace std define x ...

每日一題 1

題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...

每日一題2018 3 21

leetcode 2 模擬十進位制運算考察單鏈表基本操作。題無難點,個人基礎需要提高。definition for singly linked list.struct listnode class solution while p while q if shi val s next null ret...