鍵盤輸入乙個高精度的正整數n,去掉其中任意k個數字後剩下的數字按原左右次序將組成乙個新的正整數。程式設計對給定的n和k,尋找一種方案使得剩下的數字組成的新數最小。
輸出應包括所去掉的數字的位置和組成的新的正整數。(n不超過250位) 輸入資料均不需判錯。
n (高精度的正整數)
k (需要刪除的數字個數)
最後剩下的最小數。
175438
4由於正整數n的有效位數最大可達240位,所以可以採用字串型別來儲存n。那麼,應如何來確定該刪除哪s位呢?是不是只要刪掉最大的s個數字就可以了呢?
為了盡可能地逼近目標,我們選取的貪心策略為:每一步總是選擇乙個使剩下的數最小的數字刪去,即按高位到低位的順序搜尋,若各位數字遞增,則刪除最後乙個數字,否則刪除第乙個遞減區間的首字元。然後回到串首,按上述規則再刪除下乙個數字。重複以上過程s次,剩下的數字串便是問題的解了。
#include
using
namespace
std;
char a[250];
int main()
}len--;
}for(i=0;i<=len-1;i++)
printf("\n");
return
0;}
刪數問題(貪心)
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 輸出去掉...