貪心策略 刪數問題

2022-09-10 04:03:16 字數 1141 閱讀 4498

給定n位正整數a,去掉其中任意k≤n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。

第 1 行是1 個正整數 a。第 2 行是正整數k。

輸出最小數。

在這裡給出一組輸入。例如:

178543 

4

5001 

1

123456 

2

109 

1

在這裡給出相應的輸出。例如:

13
1
1234

9

一、貪心策略

從給定的數字中,找到公升序的最後乙個數,也可以說是降序的首個數。

二、**實現

#include#include

#include

//

strlen() 的標頭檔案

using

namespace

std;

intmain()

while(j<=len-1

) len--; //

總長度減1,因為刪除一次

}

//輸出:注意0xx這樣的輸出,需要去掉前面的0

intis=0; //

用於判斷首位是否為0,直到遍歷出現 非0 數 則置 1

for(int i=0;i)

} return0;

}

三、時間複雜度

刪除for迴圈中有兩個while迴圈,時間複雜度為o(n^3),輸出for迴圈時間複雜度為o(n),

所以整個過程的時間複雜度應該是為o(n^3)。(可能不對。。。或許)

四、心得

對於貪心策略,就是要盡量做到最貪心的思路,這是貪心策略的精髓,根據題目要求,確定要貪心的方向即可。

刪數問題(貪心)

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 輸出去掉...