刪數問題 Noip1994 貪心

2022-09-03 22:00:35 字數 801 閱讀 1443

【題目描述】

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

輸出新的正整數。(n不超過240位)

輸入資料均不需判錯。

【輸入】ns

【輸出】

最後剩下的最小數。

【輸入樣例】

175438

4【輸出樣例】

13

要考慮怎麼刪數是最小,這裡的想法就是貪心;

從高位到低位看,如果高位大於低位,那麼刪掉高位的數:175438,1<7,不管;7>5,刪掉7;15438,5>4,刪5;

高位數越大,這個數就越大,所以我們要從高位來看,高位和下一位比較;

如果是遞增的數,那麼就刪最後一位;位數變少,數字也會比刪其他的要少;例如:123456;

#include using

namespace

std;

intmain()

}len--; //如果不滿足條件 (都是遞增的數),那麼長度直接減1;適用於123456這種情況;其實不管滿不滿足比較的條件,長度都會減1

}i=0

;

while(i<=len-1&&a[i]=='0'

) i++;

if(i==len)

cout

<<"0"

for(j=i;j<=len-1;j++)

cout

}

1321 刪數問題 Noip1994

輸入乙個高精度的正整數n,去掉其中任意s個數字後剩下的數字按原左右次序組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案使得剩下的數字組成的新數最小。輸出新的正整數。n不超過240位 輸入資料均不需判錯。ns 最後剩下的最小數。175438 4 13 created on 2020 2 11 ...

題解 刪數問題 Noip1994

時間限制 1000 ms 記憶體限制 65536 kb 提交數 11506 通過數 3852 輸入乙個高精度的正整數n,去掉其中任意s個數字後剩下的數字按原左右次序組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案使得剩下的數字組成的新數最小。輸出新的正整數。n不超過240位 輸入資料均不需判...

1321 例6 3 刪數問題 Noip1994

輸入乙個高精度的正整數n,去掉其中任意s個數字後剩下的數字按原左右次序組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案使得剩下的數字組成的新數最小。輸出新的正整數。n不超過240位 輸入資料均不需判錯。ns 最後剩下的最小數。175438 4 13 include includeusing ...