2017北郵 網安院機試總結

2021-07-29 17:19:49 字數 1694 閱讀 7743

a題 最大不相同位數 輸入

先輸入需要判斷的組數t,然後依次兩個字串,共t組,字串長度在20位以內 輸出

每組字串內不相同的字元的最大位數是多少

例如: 輸入

3baccc

abe a

a ab

輸出 5

0 1

個人分析

這個題當時理解性錯誤(這個題的描述都是我把題目中不必要的內容刪去直接寫的我最後理解的題目,所以看起來大概會清晰一點?),寫了一陣的最大相同位數的判斷(明顯樣例就不是),甚至第一眼以為要用dp就直接放棄先做後面的題目了(扶額)……一開始題目表示字串長度在2k以內,後來大概是卡在第一題的人太多了,大家都被複雜度卡住了然後就換了資料量了吧。

這題當時我沒做出來,後來出來後聽同學說似乎很簡單。因為求的是不同的,首先可以判斷兩個字元的長度,如果不等長就直接輸出較長的那個長度,如果長度一樣,就看兩個字串是否完全相同,不是的話就輸出長度

(這麼簡單???)

大概這道題就是在玩文字遊戲 = =,題目出的讓人很無奈,看懂的當然so easy,沒看懂的只能死磕浪費時間。

b題  數獨 輸入

按照慣例,先輸入組數t

然後輸入t組的資料。為9*9的陣列,要求滿足:

1.每一行的數字不重複

2.每一列的數字不重複

3.每一宮的數字不重複

(每一宮即為將9*9陣列劃分為九個3*3塊後,每塊資料中九個數字不重複)

輸出:對每組資料,滿足則輸出yes,

否則輸出no

個人分析

bupt的機試題難度向來不算高的,用暴力遍歷即可。

即分別對每一行、列、宮的數字進行遍歷,輔以乙個大小為10的雜湊標記陣列即可。每一次遍歷時都將hash置零,當乙個數字第一次出現時,對應hash自加1,當前hash值大於1則直接跳出此次遍歷並輸出no(這裡我用了乙個flag,即每次遍歷前都會判斷flag的值以減少遍歷次數,當然如果是數獨的話毫無疑問要多判斷幾次flag,但並不影響複雜度。)

c題 單詞糾正

輸入乙個句子,首字母需要大寫,中間單詞的字母都需要用小寫。但i和bupt不管在**都需要大寫。

輸出輸出糾正後的句子

樣例輸入

i love bupt

hello world

樣例輸出

i love bupt

hello world

個人分析

因為之前在九度上刷過題(大概準備考研機試的很多小夥伴都在九度上做過不少題),可以先試試這個九度oj 題1111 單詞替換。

總之c題的套路就是先把所有單詞轉換成小寫(可以直接用string的函式),然後再把bupt和i都轉換為大寫,最後再看首字母是否為小寫,是的話再轉為大寫即可。

這題唯一的難度大概就在需要注意判斷乙個字串是否為單詞,需要判斷:1.若當前字串在句中,則判斷前後是否為空格;2.若當前字串在句首,則判斷之後是否為空格;3.若當前字串在句尾,則判斷之前是否為空格。

我用的string的函式直接迴圈查詢bupt和i,匹配後用下標來判斷前後,兩個while迴圈分別巢狀三個簡單的if語句就可以了。

d題

這道題我沒有來得及看_(:зゝ∠)_……畢竟還比較弱雞,聽ak的同學說就是很簡單的用floyd就可以搞定了。所以這裡附上九度的floyd演算法練習。九度oj 題1447 最短路徑

19北郵計算機院機試

32位二進位制數 x 對其進行x 1,x 3操作,並輸出。注意不能忽略前導0。輸入 第一行,乙個整數 t 代表測試資料組數。接著 t 行,輸入32為二進位制數輸出對每組測試資料。輸出兩行,第一行為x 1,第二行為x 3.測試樣例輸入2 00000000000000000000000000000000...

北郵機試 special

題目 設乙個正整數既是平方數又是立方數時,稱其為special數。輸入包含多組測試資料,第一行輸入測試資料的組數,接著在後續每行輸入n n 1000000000 的時候,請輸出1到n中包含的所有special數的個數。example inputs 21 64outputs 12 本來想的方法時間複雜...

特殊數 2017北郵機試真題

題目 設乙個正整數既是平方數又是立方數時,稱其為special數。輸入包含多組測試資料,第一行輸入測試資料的組數,接著在後續每行輸入n n 1000000000 的時候,請輸出1到n中包含的所有special數的個數。example inputs 21 64outputs 12 project sp...