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個數字後剩下的數字按照原來的左右次序組成乙個新的正整數。程式設計對給...