SDUT 2072 刪數問題 貪心

2021-08-07 14:58:51 字數 935 閱讀 6344

time limit: 1000ms

memory limit: 65536kb

submit

statistic

discuss

problem description

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

input

輸入有多組 每組包括原始數n,要去掉的數字數s;

output

輸出去掉s個數後最小的數

example input

178543  4

example output

13

解題新知:

①注意:首先之前沒有認真讀題,直接將數字組中的每個數字排序,刪掉s個最大的,以為就可以了,但是不行。題中說到「按照原來的左右次序組成乙個新的正整數」,那麼就不能打亂原數字組了。

②思路:採用貪心的策略,每刪除當前最大的乙個數字的時候,其他的數字次序要不變,比如178543,刪掉8後,543要往左移動,即17543。每當找到當前的最大數,其後面的數字要進行移動覆蓋。

ac**:

#include#include#includeusing namespace std;

int main()

int j=0;

while(num[j]=='0')

j++;

if(j==n-s)

cout<<'0';

for(int i=j;icout

return 0;

}

SDUT 2072 刪數問題

刪數問題 time limit 1000 ms memory limit 65536 kib problem description 鍵盤輸入乙個高精度的正整數n 100位 去掉其中任意s個數字後剩下的數字按照原來的左右次序組成乙個新的正整數。程式設計對給定的n與s,尋找一種方案,使得剩下的數字組成...

SDUT 2072 刪數問題

我做這個題了解到的是要注意的是刪除過程中可能會使原來包含0的數字串變成若干個以0開始的序列,當遇到數字串首位是0的時候,把高位的0去掉。鍵盤輸入乙個高精度的正整數n 100位 去掉其中任意s個數字後剩下的數字按照原來的左右次序組成乙個新的正整數。程式設計對給定的n與s,尋找一種方案,使得剩下的數字組...

ACM 刪數問題 SDUT 2072

刪數問題 time limit 1000ms memory limit 65536kb submit statistic discuss problem description 鍵盤輸入乙個高精度的正整數n 100位 去掉其中任意s個數字後剩下的數字按照原來的左右次序組成乙個新的正整數。程式設計對給...