待字閨中之兄弟數字分析

2022-09-18 21:27:10 字數 742 閱讀 1091

給定乙個數x,他的兄弟數y定義為:是由x中的數字組合而成。而且y是大於x的數中最小的。

比如,38276的兄弟數字為38627。給定x,求y。

分析:這個題目當然有暴力的方法。列出全部的排列組合。然後然後找到大於x中,最小的y。

即。找到兄弟數字。

那有沒有更好的方法呢?不想對全部情況進行窮舉。就要想辦法,盡可能縮小要處理的範圍。一般的思路,從右邊開始,兩兩交換,檢視能否夠找到y,最開始考慮兩位,進而考慮三位,依次類推,那麼怎樣確定,要考慮多少位呢?如果x的形式例如以下:x1x2x3...xky1y2y3y4。而且當中y1>y2>y3>y4,xk以下以乙個詳細樣例來說明上述過程:34

7226

41首先找到,從右邊開始的遞增的、盡可能長的數字,這裡是641。34

722(6

41)則。選取前一位數字2。進行交換。641中。大於2的最小的值是4,則作例如以下交換:34

724(6

21)為了得到最小值,對621,從小到大進行排序。得到34

7241

26則。y為34724126.對於負數的情況類似,僅僅是從後向前找第乙個遞增的位置。詳細**例如以下:

int brotheripositivenum(int num)

return res;

}int brotherinegativenum(int num)

return res;

}int brothernum(int num)

待字閨中之巧妙排序分析

排序只有1,2,3三個元素的陣列,不能統計1,2,3的個數。分析 這個題目,儘管也是排序,但卻不能使用快速排序的方法。只有三個元素,如果時間複雜度仍舊是o nlogn 顯然不是最好的。那就可以使用線性的排序演算法,例如計數排序,可是題目中要求,不能夠對1,2,3進行統計個數。那該如何處理呢?請大家看...

待字閨中之巧妙排序分析

排序僅僅有1。2,3三個元素的陣列。不能統計1,2。3的個數。分析 這個題目,雖然也是排序,但卻不能使用高速排序的方法。僅僅有三個元素,假設時間複雜度仍舊是o nlogn 顯然不是最好的。那就行使用線性的排序演算法,比如計數排序。但是題目中要求,不可以對1,2,3進行統計個數。那該怎樣處理呢?請大家...

待字閨中之樹的高度分析

有乙個棵樹,不一定是二叉樹,有n個節點,編號為0到n 1。有乙個陣列a,陣列的索引為0到n 1,陣列的值a i 表示節點i的父節點的id,根節點的父節點id為 1。給定陣列a,求得樹的高度。分析這個題目我們首先把陣列寫出來,然後進一步分析,就很明了了,如下例子 333 1201234根據題意 乙個很...