華為機試題目一(牛客網)

2021-10-14 10:02:45 字數 3076 閱讀 8333

}1:輸入用的fgets,最開始我用gets報段錯誤;

2:strrchr函式用於定位需要的字元最後一次出現的位置;

多積累字串函式

3:由於移動問題導致資料+2或者-1,這個我沒有仔細去研究,純粹看輸出直接換算的,有時間可以認真研究一下這個移動步位問題。

}這道題演算法很簡單,但讓我浪費了一些時間的是輸入輸出,由於牛客網的測試環境是迴圈測試的,一開始我的輸入由於字串的換行問題導致輸出一直是num的初始化值。後來修改為圖上**後測試通過。

}這個**中比較重要的部分有兩點:

1:while(~scanf("%d",&num))

迴圈輸入多組示例時用語句代表當沒有輸入時跳出迴圈,因為沒有輸入時scanf語句返回-1,用~取反後即為0,此時跳出while語句。

2:for(int i=0;i這裡array陣列是用來標記的,當遇到重複數字p時,由於與array陣列中的元素衝突,重複不計入,注意輸出的是陣列下標,而不是陣列元素,因為標記的元素都為1.

}我的這個**事件複雜度並不是很好,牛客上有很多的優秀通過**。但因為一開始我就按我的思路寫了,所以也沒有換了。執行過程中最大的問題是臨界問題,因為臨界問題我修改了好幾遍,這裡著重標記一下臨界的幾種情況:

即注意第一行和最後一行的臨界,討論他們是8的整數和不是8的整數的情況。

另外一點需要注意的是\n的輸出,是否輸出了多餘的回車換行,以及陣列的初始化,考慮迴圈測試模式一定要記得初始化陣列。

}注意以下幾點:

1:將字元型資料轉換為整型,比如0-9即str[i]-48即可;

2:注意進製計算,用了冪函式pow;

3:我的**中a-f的轉換屬於暴力轉換,事實上直接用str[i]-55即可,寫**的時候沒想到。

前5題的演算法記錄到此,總的來說做下來給我最大的感受就是輸入輸出與臨界問題,牛客網還提供了測試,也提供了哪些樣例沒通過方便檢查臨界,真正機試時不會提供錯誤樣例,所以自己一定要考慮好臨界相關問題,輸入輸出也要調整好。

牛客網華為機試題後感

牛客網華為機試題後感 2 14 def switch str input print str 1 switch 解題思路 5種方法的比較 簡單的步長為 1,即字串的翻轉 1 2.使用list函式把字串放到列表裡 a.交換前後字母的位置 b.遞迴的方式,每次輸出乙個字元 d.使用for迴圈,從左至右輸...

牛客華為機試題

題目描述 開發乙個座標計算工具,a表示向左移動,d表示向右移動,w表示向上移動,s表示向下移動。從 0,0 點開始移動,從輸入字串裡面讀取一些座標,並將最終輸入結果輸出到輸出檔案裡面。輸入 合法座標為a 或者d或者w或者s 數字 兩位以內 座標之間以 分隔。非法座標點需要進行丟棄。如aa10 a1a...

牛客網 華為機試 020 牛客網

密碼要求 1.長度超過8位 2.包括大小寫字母.數字.其它符號,以上四種至少三種 3.不能有相同長度超2的子串重複 說明 長度超過2的子串 一組或多組長度超過2的子符串。每組佔一行 如果符合要求輸出 ok,否則輸出ng 示例1 021abc9000 021abc9abc1 021abc9000 02...