日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Code Pratice】—— 猜字母、次数差、交换瓶子

發(fā)布時間:2024/1/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Code Pratice】—— 猜字母、次数差、交换瓶子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 1 | 猜字母
    • 題目
    • 思路
    • 邏輯代碼
  • 2 | 次數(shù)差
    • 題目
    • 思路
    • 邏輯代碼
  • 3 | 交換瓶子
    • 題目
    • 思路
    • 邏輯代碼

1 | 猜字母

題目

把a(bǔ)bcd…s共19個字母組成的序列重復(fù)拼接106次,得到長度為2014的串。
接下來刪除第1個字母(即開頭的字母a),以及第3個,第5個等所有奇數(shù)位置的字母。
得到的新串再進(jìn)行刪除奇數(shù)位置字母的動作。如此下去,最后只剩下一個字母,請寫出該字母。

思路

題目關(guān)鍵點:

  • 每次刪除當(dāng)前字母串的奇數(shù)項
  • 重復(fù)第一步直到剩余一個字母
  • 問題就相當(dāng)于怎么解決上面兩點

  • 怎么確定奇數(shù)項?怎么刪除?

    • 奇數(shù)項確定:if (i % 2)
    • 刪除:erase()
  • 怎么重復(fù)第一步?
    每一次刪除都會改變原有的字母串結(jié)構(gòu),所以如果每查找到一個就刪除一個的話,就會導(dǎo)致下一個查找的奇數(shù)項是原來的偶數(shù)項
    比如字母串a(chǎn)bcdef,刪除第一個奇數(shù)項a后,變成了bcdef,這時候再找奇數(shù)項就找到了b,但是b本應(yīng)該是本輪的第一個偶數(shù)項
    所以在第一步中應(yīng)該先確定本輪的所有奇數(shù)項,然后再做刪除動作

  • 根據(jù)上面兩點,大概思路如下

  • 判斷當(dāng)前字母串長度是否為1,不是則遍歷當(dāng)前字母串,找出所有的奇數(shù)項下標(biāo)并保存,是則返回結(jié)果
  • 根據(jù)保存的奇數(shù)項下標(biāo),刪除對應(yīng)字母,這里要注意,沒刪除一個字母,字母串的長度就會減一,所以刪除的時候,下標(biāo)要跟著長度變化
  • 重復(fù)以上兩步
  • 邏輯代碼

    void GuessAlphabet(const string& i_cStr) {int inLen = i_cStr.size();if (0 == inLen){cout << "Input parameter is unvalid." << endl;return;}string AlpStr = i_cStr;for (int i = 0; i < 106; i++){AlpStr += i_cStr;}while (1 != AlpStr.size()){vector<int> tmp;for (int i = 0; i < AlpStr.size(); i++){if ((i + 1) % 2){tmp.push_back(i);}}string::iterator it;for (int i = 0; i < tmp.size(); i++){it = AlpStr.begin() + tmp[i] - i;AlpStr.erase(it);}}cout << "The Last Alphabet is [" << AlpStr << "]." << endl; }

    2 | 次數(shù)差

    題目

    x星球有26只球隊,分別用 a ~ z 的26個字母代表。他們總是不停地比賽。
    在某一賽段,哪個球隊獲勝了,就記錄下代表它的字母,這樣就形成一個長長的串。
    國王總是詢問:獲勝次數(shù)最多的和獲勝次數(shù)最少的有多大差距?(當(dāng)然,他不關(guān)心那些一次也沒獲勝的,認(rèn)為他們在怠工罷了)

    輸入格式
    一個串,表示球隊獲勝情況(保證串的長度<1000)
    abaabcaa

    輸出格式
    要求輸出一個數(shù)字,表示出現(xiàn)次數(shù)最多的字母比出現(xiàn)次數(shù)最少的字母多了多少次。
    4
    提示
    a 出現(xiàn) 5 次,最多;c 出現(xiàn)1次,最少。
    5 - 1 = 4

    思路

    簡化題目意思就是求一串字母中出現(xiàn)次數(shù)最多的字母減去出現(xiàn)次數(shù)最少的字母的個數(shù)
    思路如下:

  • 定義26長度的數(shù)組,代表26位字母,從頭開始遍歷這串字母
  • 判斷當(dāng)前字母是哪個,對應(yīng)數(shù)組位內(nèi)容加一
  • 遍歷完全字母串后,對數(shù)組進(jìn)行排序
  • 最高位值減去最低位值(非0)即為最后答案
  • 邏輯代碼

    int PoorTimes(const string& i_cStr) {int res = -1;int len = i_cStr.size();if (1 >= len){return res;}string Alphabet = "abcdefghijklmnopqrstuvwxyz";vector<int> AlphabetTimes(26, 0);for (int i = 0; i < len; i++){for (int j = 0; j < 26; j++){if (Alphabet[j] == i_cStr[i]){AlphabetTimes[j]++;}}}Sort(AlphabetTimes);for (int i = 0; i < len; i++){if ((0 != AlphabetTimes[i]) && (0 == AlphabetTimes[i + 1])){res = AlphabetTimes[0] - AlphabetTimes[i];break;}}return res; }

    3 | 交換瓶子

    題目

    有N個瓶子,編號 1 ~ N,放在架子上。
    比如有5個瓶子:2 1 3 5 4
    要求每次拿起2個瓶子,交換它們的位置。
    經(jīng)過若干次后,使得瓶子的序號為:1 2 3 4 5
    對于這么簡單的情況,顯然,至少需要交換2次就可以復(fù)位。
    如果瓶子更多呢?你可以通過編程來解決。
    輸入格式為兩行:
    第一行: 一個正整數(shù)N(N<10000), 表示瓶子的數(shù)目
    第二行:N個正整數(shù),用空格分開,表示瓶子目前的排列情況。

    輸出數(shù)據(jù)為一行一個正整數(shù):
    表示至少交換多少次,才能完成排序。

    例子1
    輸入:
    5
    3 1 2 5 4

    輸出:
    3

    例子2
    輸入:
    5
    5 4 3 2 1

    輸出:
    2

    思路

    交換有點排序的意思,就是通過每次交換兩個瓶子的位置,使得最后所有瓶子都是按照升序排列的,所以只要保證每個瓶子的數(shù)字跟所在下標(biāo)對應(yīng)即可

  • 遍歷每一個瓶子,判斷當(dāng)前下標(biāo)和瓶子的數(shù)字是否對應(yīng)
  • 如果對應(yīng)則遍歷下一個
  • 如果不對應(yīng),則尋找到當(dāng)前下標(biāo)對應(yīng)的瓶子數(shù)字的下標(biāo),并交換位置,次數(shù)+1
  • 重復(fù)以上步驟,直到遍歷完所有瓶子
  • *需要注意:*瓶子數(shù)字從1開始,而數(shù)組的下標(biāo)是從0開始的,所以一開始應(yīng)該先把下標(biāo)0的位置填充一個0,保證接下來輸入的數(shù)字是從1開始存放的

    邏輯代碼

    int ExchangeBottles(int i_uNum) {int res = -1;if (2 > i_uNum){return res;}res = 0;vector<int> Bottles;Bottles.push_back(0);for (int i = 1; i <= i_uNum; i++){cin >> Bottles[i];}for (int i = 1; i <= i_uNum; i++){if (Bottles[i] != i){for (int j = 1; j <= i_uNum; j++){if (Bottles[j] == i){int tmp = Bottles[i];Bottles[i] = Bottles[j];Bottles[j] = tmp;res++;}}}}return res; }

    總結(jié)

    以上是生活随笔為你收集整理的【Code Pratice】—— 猜字母、次数差、交换瓶子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲成人日韩在线 | 日韩人妻精品一区二区三区 | 国产福利视频一区二区 | 日韩久久影视 | av一区二区三区在线 | 夜夜夜操 | 亚洲三级精品 | 窝窝午夜精品一区二区 | 泰坦尼克号3小时49分的观看方法 | 女女调教被c哭捆绑喷水百合 | 波多野结衣一级 | 婷婷激情六月 | 日韩一区二区毛片 | 天天摸天天干天天操 | 男人天堂a | 秋霞一级视频 | 日韩精品1区 | 亚洲一区二区蜜桃 | 女人床技48动态图 | 亚洲视频不卡 | 五月婷婷免费视频 | 日日摸日日添日日碰9学生露脸 | 91情侣视频| av久热| 韩国伦理在线 | 成人午夜影院在线观看 | 大肉大捧一进一出好爽视频动漫 | 国产老熟女一区二区三区 | 亚洲男人的天堂在线视频 | 国产剧情一区 | 欧美久久精品一级黑人c片 1000部多毛熟女毛茸茸 | 婷婷中文 | 又色又爽又黄无遮挡的免费视频 | 午夜视频久久久 | 国产成人自拍偷拍 | 午夜影院污 | 精品日韩在线播放 | 国产精品一区二区三区免费 | 西川结衣在线观看 | 国产一区二区不卡在线 | 麻豆乱码国产一区二区三区 | 亚洲九九视频 | 日本h在线 | 一区视频免费观看 | 91性高潮久久久久久久 | 国内精品嫩模av私拍在线观看 | 夜夜春av| 一级黄色播放 | 玉足女爽爽91 | 中文文字幕一区二区三三 | 美女在线网站 | 国产传媒av在线 | 国产精品美女久久久久av超清 | 一本色道久久综合亚洲精品按摩 | 秋霞av鲁丝片一区二区 | 久久影库 | 欧美永久| 成人gav| 中文字幕一区二区人妻电影丶 | 精品妇女一区二区三区 | 中文字幕人妻一区二 | 国产精品秘入口18禁麻豆免会员 | 国产卡一卡二在线 | 成人永久视频 | 少妇综合网 | 日本一区二区三区在线观看 | 亚洲在线免费看 | 九月婷婷| 国产日产亚洲精品 | 人人搞人人 | 日本啊啊视频 | 久久久久久久综合 | 精品九一| 殴美一级视频 | 视频网站在线观看18 | 一区二区三区精品久久久 | 色婷婷av一区二区三区大白胸 | 天天爱夜夜爽 | 四虎影库在线播放 | 老汉av在线 | 欧美a级在线免费观看 | 天天操天天曰 | 在线观看欧美日韩视频 | 精品国产日本 | 免费激情片 | 久久久久国产免费 | 乱老熟女一区二区三区 | 呦呦网| 亚洲97 | 成人一级影视 | 91精品视频观看 | 456亚洲影院 | 亚洲欧美综合色 | 色婷婷综合久久久久中文 | 桃色视频网| 国产第一色 | 久艹在线视频 | 丁香花高清视频完整电影 | 尤物网在线|