洛谷 P1106 刪數問題
阿新 • • 發佈:2017-11-26
int back 輸入輸出 region i++ strlen () tar mes
P1106 刪數問題
題目描述
鍵盤輸入一個高精度的正整數N,去掉其中任意k個數字後剩下的數字按原左右次序將組成一個新的正整數。編程對給定的N和k,尋找一種方案使得剩下的數字組成的新數最小。
輸出應包括所去掉的數字的位置和組成的新的整數。(N不超過250位) 輸入數據均不需判錯。
輸入輸出格式
輸入格式:
n (高精度的正整數)
k (需要刪除的數字個數)
輸出格式:
最後剩下的最小數。
輸入輸出樣例
輸入樣例#1: 復制175438
4
輸出樣例#1: 復制
13
思路:貪心。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; char s[10000002]; int k; int main() { scanf("%s",s); scanf("%d",&k); int i=0,j=1; while(s[j-1]>0) { if(k<=0||s[i]<=s[j]) s[++i]=s[j++]; else{ i--;k--; } }for(i=0;s[i]==‘0‘&&i<strlen(s)-1;i++); printf("%s", s+i); }
洛谷 P1106 刪數問題