1. 程式人生 > >洛谷 P1106 刪數問題

洛谷 P1106 刪數問題

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 刪數問題