nylgacm_1057_寻找最大数(三)
生活随笔
收集整理的這篇文章主要介紹了
nylgacm_1057_寻找最大数(三)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
給出一個整數N,每次可以移動2個相鄰數位上的數字,最多移動K次,得到一個新的整數。
求這個新的整數的最大值是多少。
輸入
多組測試數據。
每組測試數據占一行,每行有兩個數N和K (1?≤?N≤?10^18; 0?≤?K?≤?100).
輸出
每組測試數據的輸出占一行,輸出移動后得到的新的整數的最大值。
樣例輸入
1990 1 100 0 9090000078001234 6樣例輸出
9190 100 9907000008001234解析:首先這道題設計到移位操作,所以我建議把數字改成字符數組來處理。
對于數據處理,我們要從最簡單的開始考慮:
一、當輸入的數是個位數時,我們應該原樣輸出;
二、對于多位數移動k次求最大數時:
?? ?當k<數據位數時,?則把前k位中的最大數依次交換到首位,?k = k -?把最大數移到首位所需的次數;然后把第二位到第2+k位中的最大數依次交換到第二位,k?=?k?-?把2~2+k間的最大數依次交換到第二位的所需的次數;以此類推,第二、第三位。。。?? ?
?? ?當k>數據位數時,?則把前k位(即整串數字)的最大數依次交換到首位;這里跟上面的情況是一樣的我不再贅述。?? ?
?? ?for(int?i=?當前位置p;?i < p + k; i++)
?? ?{
?? ??? ?找到最大樹的下標;
?? ?}
?? ?if(找到)
?? ?{
?? ??? ?依次交換位置;
?? ??? ?改變k值;
?? ?}
?? ?移動當前位置p到后一位;
總結
以上是生活随笔為你收集整理的nylgacm_1057_寻找最大数(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三种素数求法
- 下一篇: nylgACM_105_九的余数