題目描述:給定乙個高精度正整數a, 去掉其中k個數字後按原左右次序將組成乙個新的正整數。對給定的a, k尋找一種方案,使得剩下的數字組成的新數最小。
此題可用貪心演算法進行求解
具體思路:當k=1時,對於n位數構成的數刪除哪一位,使得剩下的資料最小。刪除滿足如下條件的a[i]:它是第乙個a[i]>a[i+1]的數,如果不存在則刪除a[n]。
當n>k>1,重複上述操作。每刪除乙個數字後,後面的數字向前移位。再從頭開始,刪除第2個,依此重複為k次完成。
若刪除數字少於k個,但數字已經按公升序排列,則預設刪除尾部數字
**如下:
#include
#include
#define max 100
void
solve
(int n,
int k,
int*b)
//解決問題,傳入整數字數,刪除位數,及儲存整數的陣列
if(count == k)
//當刪除數字與設定的相等時,輸出數字
i =1;
//置1,是為了每刪除乙個數字後,重頭開始排查}if
(i == n)
//當該數已經是按公升序排列時(如:12345),輸出該數,若此時刪除數字少於設定值(若少刪兩位數),則預設刪除該數尾部數字(則輸出123)}}
intmain()
示例輸入輸出:
學習中,歡迎交流
貪心演算法 刪數問題
刪數問題 給定乙個n位正整數a,刪掉其中任意k k n 個位,剩下的為按原順序形成乙個新的正整數。找出剩下的數字最小的刪樹方案。輸入 a 0,n位,0 輸出 最小的剩下的數。貪心策略 最近下降點優先。自左向右逐位掃瞄數字a,找到第i位,使得a i a i 1 那麼刪掉第i位後,剩下的是當前數字刪掉1...
python貪心演算法求刪數問題 貪心演算法 刪數問題
給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新 的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最 小的刪數方案。輸入格式 第 1 行是1 個正整數 a。第 2 行是正整數k。輸出格式 輸出最小數。輸入樣例 在這裡給出一組輸入。例如...
python貪心演算法求刪數問題 貪心演算法 刪數問題
給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a 和正整數k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。演算法的原理應該是說從最高位開始,一次向低位搜尋,一旦遇到前一位 高位 的數大於當前位,則刪去前一位,直到刪除k個數,如果...