zoukankan      html  css  js  c++  java
  • ACM程序设计选修课——1049: Efface Numbers(贪心)

    1049: Efface Numbers

    Time Limit: 5 Sec  Memory Limit: 128 MB
    Submit: 9  Solved: 4
    [Submit][Status][Web Board]

    Description

    你有一个长度为n的数字串, 现在要求你删除其中k个数字, 使得剩下的数字在不改变原有顺序的情况下,组成的数字最大.

     

    Input

    每组数据包含一个数字串(1 <= n <= 1000),和一个整数k (0 <= k < n).

     

    Output

    对于每组数据, 输出你的答案.

     

    Sample Input

    1452 2
    33 0

    Sample Output

    52
    33

    做法:从左到右找到第一次出现的递减序列的最后一个值,删掉它。结尾用substr来保

    证本身长度只有2但并非递减的情况

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<queue>
    #include<set>
    #include<map>
    #include<sstream>
    #include<algorithm>
    #include<cmath>
    #include<cstdlib>
    using namespace std;
    int main (void)
    {
    	string s;
    	int i,j,k;
    	while (cin>>s>>k)
    	{
    		int len=s.size();
    		int tlen=len;
    		for (j=0; j<k; j++)
    		{
    			for (i=0; i<len; i++)
    			{
    				if(s[i]<s[i+1])
    				{
    					s.erase(i,1);
    					len--;
    					break;
    				}				
    			}
    		}
    		cout<<s.substr(0,tlen-k)<<endl;
    	}
    	return 0;
    }
  • 相关阅读:
    POJ 1321 棋盘问题 (DFS)
    POJ 2676 Suduku
    Codeforce Segment Occurrences——string中substr的应用
    POJ 2492
    HDU 3088
    POJ 2992
    STL的sort排序
    mongoimport csv文件
    远程计算机或设备将不接受连接,IE无法上网
    注册MongoDB服务
  • 原文地址:https://www.cnblogs.com/Blackops/p/5356401.html
Copyright © 2011-2022 走看看