题目:1065-简单的最小数
分析:
本道题是一道模拟题,主要用贪心策略
贪心策略如下: 用string a存储数字,如178543, 从a[0]开始尽量使a[i]成递增顺序,若a[i]>a[i+1]将删除a[i],若数组每个数都满足a[i]<=a[i+1],将删除最后一个数字 如178543,因为8>5第一个删除8变为17543;因为7>5,删7得1543,因为5>4,删5得143; 因为4>3,删4得13;
代码:
#include<iostream>
#include<string>
using namespace std
;
int main()
{
int n
, k
, i
, j
,p
;
string a
;
while (cin
>> n
>> k
>> a
)
{
a
= '0' + a
;
for (j
= 1; j
<= k
; j
++)
{
p
= a
.size() - 1;
for (i
= 1; i
< a
.size() - 1; i
++)
if (a
[i
] > a
[i
+ 1])
{
p
= i
;
break;
}
a
.erase(p
, 1);
}
while (a
[0] == '0')
a
.erase(0, 1);
if (a
.empty())
a
= '0';
cout
<< a
<<endl
;
}
}
提交结果: