程式設計與實踐第二次題目 思路(無碼) T7已補

2021-10-09 09:31:35 字數 3221 閱讀 8275

\haachama/ \haachama/ \haachama/

v1.0.1 第七題已經補上啦

圖轉侵刪

一夜發白《千字文》

t8 迴圈節

t9 禮物

t10 括號匹配

鳴謝最後

有一說一這週的題好難啊 也是憋到了週六中午才開始寫題解 周四一天就做出來1個 qaq

小張的英語不太好,今天他又要面臨英語作文的困擾了。

終於他在ddl的前一秒完成了他的作文,但是由於太過匆忙,很多單詞的大小寫出現了問題。

請你在一秒之內幫他改完英語作文吧!

請編寫乙個程式,從輸入中讀取一篇中文文章,並統計出該文章中 ascii 字元以外的重複出現的每乙個字重複出現的次數。

文章使用 utf-8 編碼,可能會出現任何可以用 utf-8 編碼表示的字元(不限於中文)。

文章中所有的字元在 ucs-2 能夠表示的範圍內,即字元的 unicode 值用兩個位元組就可以表示。

小張是乙個喜歡規律的人,因此他對數字的迴圈節頗有研究。

例如,數字123123123,有長度為3,9的迴圈節。

數字12341234,有長度為4,8的迴圈節。

數字12345,只有長度為5的迴圈節。

現在小張給你乙個數字 a ,請你幫幫他找到最小的大於 a 且有長度為 l 的迴圈節的數。

設迴圈節長度為l,數字a的長度為len。

因為這個題好像99999這種數字做起來會很複雜,所以我乾脆把每個位置都是9的單拿出來判斷了:

如果全是9:

如果l = 1的話,111111就完事

如果l不是1,那就1000010000這種

一般情況:

如果l > len, 100000000就完事

如果l = len,執行類似高精度加法 +1 一樣的東西,算出來比a大1的就完事

如果l < len, 要去判斷l是不是len的因子:

如果不是,還是10001000這樣就可以

如果是,就要先取出來a的前l位數字,然後每次往後比l位,如果發現有一位大了直接輸出就行,如果發現有一位小了需要執行類似高精度加法 +1 一樣的東西,直到大了。

注意,這個題必須要嚴格大於不能等於

最後附上幾個自己除錯時候犯的錯誤用例

如果你 7,16wa了 請測試999998這樣的 應該輸出999999 或者幾個999

如果你11,14 wa了 請測試3 123124122這樣的 應該輸出124124124而不是123123123

如果你 6,15wa了 請測試 3 1這樣的 應該輸出100而不是111

本人一開始提交的時候wa了這6個,後來一點點調好了,至於別的用例我確實不太清楚。

小張的好朋友小松要過生日了,小張打算為他挑選一件禮物。在市場上他發現有乙個珠子手鐲的商店很不錯。在這家商店會**特殊的珠子並穿成乙個手鐲,在貨架上珠子排成一排,每乙個珠子上有乙個小寫英文本母。店家有乙個特殊的規定,必須在一排珠子中按順序從左到右挑選。小張心中已經有乙個想要送給小松的單詞,請你告訴他應該如何挑選珠子使得手鐲上珠子的字母組成小張想要的單詞。

這道題我看有的同學被折磨了好久,然後我邊聽haachama的歌邊寫,一遍過了就很神奇,該買彩票了

首先讀入的貨架上的珠子我叫做tmp,tmp的長度 = len,想要的單詞我叫做aim,拿乙個his陣列記錄珠子的下標

這道題我的想法是,先把tmp翻一倍,整了個新串store = tmp復讀一遍。

然後從store的第一位開始去匹配aim,如果找到了,his先記下這位的下標i,然後從這位開始繼續遍歷store一直遍歷到i+len,因為如果繼續的話,就會串掉。如果aim都匹配齊了輸出即可。

這題的限制在於,新找到的store匹配上那一位的下標要麼是his裡最大的,要麼是%len之後比第一位匹配上的還小的,要不然這一位就會插到中間去就不能「串成環形」了。

(有點繞,我感覺我自己都沒說太清楚)

darkdown在樂學上出了一道給定括號序列,判斷其合法性的問題。

括號序列是由左括號「(」和右括號「)」組成的非空序列。對於乙個括號序列很容易判定其合法性。比如「()」、「(())()」、「(()())」、「(()(()))」、「()()()」都是合法的,而「)」、「(」、「(()」、「(()))(」都是非法的。

roark看了一眼題,立刻去飲水機處接了一杯水。

darkdown意識到他是在暗示這道題太水了,於是立刻把題改了改,增加了一、、難度。

給定 n 個括號序列,兩兩配對,問最多能組成多少對合法括號序列。(每乙個括號序列只能在一對**現)

roark接完水回來再看了看新題,開始撓頭了,快幫幫他!

因為這個題目描述中,判斷括號合法性的很方便的方法是用棧,所以我大概就先用棧去做。

一開始我的想法是,隨便先抓兩個放在一起,然後去判斷匹不匹配。

判斷匹配的時候我也是,只讓左括號進棧,如果輸進來乙個右括號然後棧是空的那直接就**。

但是,這方法必定tle,因為我當時都沒想明白第二個用例為啥是1,感覺兩個交換順序也不一樣啊,為啥是1.

後來df才告訴我這句話是啥意思:

如果匹配上了相當於就被扔掉了,不會繼續參與匹配。

但是由於括號是 類似於二進位制的,因為只有左和右,所以不會出現「a跟b,c能匹配,b跟c,d能匹配,c不能匹配d,但是由於我先把ab組合導致原來能匹配兩組現在只能匹配一組」的情況

所以後來的想法大概是這樣的:

把每個輸入進來的括號序列先化簡,去掉中間原本本來就能匹配的括號,最後只剩下四種情況:

全是左括號

全是右括號

有左有右

啥也不剩(自我匹配)

對於3,因為這個題只能隨便抓出來兩個進行匹配,所以只要是3這種情況的直接扔掉讓他爬。

對於4,4這種必然不能和1,2去匹配,所以最後結果加上4這種情況出現的次數/2就行了。

對於1,2 因為肯定只能是同樣數量的左(右)括號去匹配,所以對於每種 同樣數量的 左(右)括號的情況,取他們的最小值即可。

例如:假如「((」有5個,「))」有3個,那最後結果+min(5,3) = 3即可。

qwq感謝df和lhl兩位大佬的支援qwq

(我自己也8太明白,折騰了半天)

希望下次的題能好做一點qwq

程式設計與實踐第一次題目 思路(無碼)

t2 a b i t3 解謎遊戲 t4 北湖挖坑 t5 北湖填坑 鳴謝很久很久以前,巨龍突然出現,帶來災難帶走了公主又消失不見,王國十分危險,世間誰最勇敢,一位勇者趕來大聲喊 我要帶上最好的劍,翻過最高的山,闖進最深的森林,把公主帶回到面前 最後,英雄 達拉崩巴斑得貝迪卜多比魯翁 他戰勝了巨龍 昆相...

第二次實踐作業

要求 推薦apache或nginx,要求標明映象作者資訊,安裝必要的工具以方便維護 設定你自己的web存放目錄,安全起見,請將預設的監聽埠80更改為你自定義的埠,並且宣告暴露的埠,容器啟動時,能直接進入web 的存放目錄。將監聽的埠號 listen 從80改為2049 web預設目錄 root 從 ...

第二次程式設計作業

發布一篇隨筆,使用markdown語法進行編輯。為自己的 倉庫新增issues模板。使用分支管理來提交 pull request 每次提交使用有意義的commit資訊。無法滿足樣例2,我的方法是再增加乙個判斷條件 只能按固定方法輸入 將別人對你的issue張貼到作業隨筆中,並作出解釋和自己的修改方法...