貪心 刪數問題

2021-10-10 01:12:31 字數 983 閱讀 4553

題目大意:

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

輸入格式

n (高精度的正整數)

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

輸出格式

最後剩下的最小數。

輸入輸出樣例

輸入1754384輸出

13解題思路:

首先,我們先舉乙個例子:

1 7 5 4 3 8

刪的個數:4

不難看出:

第一次刪的應該是 7

第二次刪的應該是 5

第三次刪的應該是 4

第四次刪的應該是 8

那麼,剩下的數就是「13」(經過比較發現確實正確)

是如何得出規律的呢?? 我們仔細觀察一下這個例子:

第一次刪的數為7,和5比較,發現7跟大(簡單表述)

第二次刪的數為5,和4比較,發現5跟大

第三次刪的數為4,和3比較,發現4跟大

第四次刪的數為8,和最後乙個數(應該是a[7](假設有,並為0))比較,發現5跟大

大家有木有發現規律?? 很明顯,就是刪去下坡數,也就是這個例子中的7(比5大)、5(比4大)、4(比3大)、8(比最後乙個大(假設有,並為0))。

#include

using

namespace std;

string st;

int n,a[

251]

,l;int

main()

int i =

0,k =0;

while

(a[i]==0

&& k < l -

1) k++

,i++

;for

(int i = k;i < l;i++

) cout<;return0;

}

刪數問題(貪心)

time limit 1000ms memory limit 65536k 有疑問?點這裡 給定n 位 n 100 正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n 位正整數a和正整數k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。對於給定的正整...

貪心 刪數問題

題目描述 鍵盤輸入乙個高精度的正整數n 240位 去掉其中任意s個數字後剩下的數字按原左右次序將組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案,使得剩下的數字組成的新數最小。n s 最後剩下的最小數 樣例輸入 178543 4樣例輸出13 這題貪心是要找乙個單調增的數,即保證較小數總在高位...

貪心 刪數問題

problem description 鍵盤輸入乙個高精度的正整數n 100位 去掉其中任意s個數字後剩下的數字按照原來的左右次序組成乙個新的正整數。程式設計對給定的n與s,尋找一種方案,使得剩下的數字組成的新數最小。input 輸入有多組 每組包括原始數n,要去掉的數字數s output 輸出去掉...