1065-简单的最小数

    科技2022-07-13  144

    题目: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; } }

    提交结果:

    Processed: 0.010, SQL: 8