P1106 刪數問題

2022-08-16 01:00:22 字數 641 閱讀 3542

展開

鍵盤輸入乙個高精度的正整數nn(不超過250250位) ,去掉其中任意kk個數字後剩下的數字按原左右次序將組成乙個新的正整數。程式設計對給定的nn和kk,尋找一種方案使得剩下的數字組成的新數最小。

nn (高精度的正整數)

kk(需要刪除的數字個數)

最後剩下的最小數。

輸入 #1複製

175438 

4

輸出 #1複製

13

思路:從前往後列舉,刪除上公升子串的最後一位。也就是如果s[i]>s[i+1],那麼就刪除s[i];

由於刪除操作比較麻煩,可以採用第i+1到n位向前移一位的方式。

還要考慮前導0的問題。

#include#include

using

namespace

std;

intmain()

}if(flag)}}

int num=0

;

while(num'0'

) num++;

if(num==s.size()-k1)

cout

<< 0

return0;

}

P1106 刪數問題

傳送門 這道題問給出乙個數字 n位 問刪去任意k位使其剩下位數組成的數字最小 一開始我是覺得刪掉前k大的位數,顯然是不對的。例如,1649,我們刪掉9,那麼結果就為164,如果我們刪掉6就是149,顯然後面的更小的。看了題解才會做,我們要一直找s i s i 1 的數並刪掉,並且肯定能找到,中間找不...

P1106 刪數問題

題目描述 鍵盤輸入乙個高精度的正整數n 不超過250位 去掉其中任意k個數字後剩下的數字按原左右次序將組成乙個新的正整數。程式設計對給定的n和k,尋找一種方案使得剩下的數字組成的新數最小。輸入格式 n 高精度的正整數 k 需要刪除的數字個數 輸出格式 最後剩下的最小數。輸入輸出樣例 輸入175438...

P1106 刪數問題

題目描述 鍵盤輸入乙個高精度的正整數 n 不超過 250 位 去掉其中任意 k 個數字後剩下的數字按原左右次序將組成乙個新的非負整數。程式設計對給定的 n和 k,尋找一種方案使得剩下的數字組成的新數最小。輸入格式 n 高精度的正整數 k 需要刪除的數字個數 輸出格式 最後剩下的最小數。輸入輸出樣例 ...