删数问题
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。
Input
输入有多组 每组包括原始数n,要去掉的数字数s;
Output
输出去掉s个数后最小的数
Example Input
178543 4
Example Output
13
Hint
Author
#include <cstdio>
#include <cstring>
const int maxn = 500 ;
int main()
{
char a [ maxn ] ;
int k ;
//printf ( "输入正整数:\n" ) ;
scanf ( "%s" , a ) ;
//printf ( "输入k值:\n" ) ;
scanf ( "%d" , &k ) ;
int len = strlen ( a ) ;
while ( k-- ) {
int i = 0 , j ;
while ( i < len - 1 && a [ i] <= a [ i + 1 ] )
i++ ;
//表示字符串是递增的
if ( i == len - 1) {
len-- ;
while ( k-- )
len-- ;
break ;
}
else {
for ( j = i ; j < len - 1 ; j++ )
a [ j ] = a [ j + 1 ] ;
len-- ;
}
}
//printf ( "最小值为:\n" ) ;
int l ;
for ( l = 0 ; l < len ; l++ )
printf ( "%c" , a [ l ] ) ;
printf ( "\n" ) ;
return 0 ;
}