信息学奥赛一本通T1321:贪心算法 删数问题

【题目描述】输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。输出新的正整数。(n不超过240位)输入数据均不需判错。【输入】n 和 s【输出】一个正整数,即最少需要的组数。【输入样例】175438【输出样例】13【源程序】 

信息学奥赛一本通T1321:删数问题

【题目描述】

输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。

输出新的正整数。(n不超过240位)

输入数据均不需判错。

【输入】

n 和 s

【输出】

一个正整数,即最少需要的组数。

【输入样例】

175438
4

【输出样例】

13

【源程序】

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define N 20
using namespace std;
int main()
{
    int t;
    char str[260];
    int i,j;

    cin>>str;
    cin>>t;
    int len=strlen(str);
    while(t--)
    {
        for(i=0;i<=len-2;i++)
            if(str[i]>str[i+1])
            {
                for(j=i;j<=len-2;j++)
                    str[j]=str[j+1];
                break;
            }
        len--;
    }
    i=0;
    while(i<=len-1&&str[i]=='0')
        i++;
    if(i==len)
        cout<<"0"<<endl;
    else
        for(j=i;j<=len-1;j++)
            cout<<str[j];
    return 0;
}

 

信息学奥赛一本通T1321:贪心算法 删数问题 归属于 贪心算法,更多同类题解源程序见:贪心算法 和 删数问题

0 条评论

请先 登录 后评论
不写代码的码农
轩爸

0 篇文章

作家榜 »

  1. admin 2 文章
  2. 张芳 0 文章
  3. hanna 0 文章
  4. Jason 0 文章
  5. lixiaioqian 0 文章
  6. GeraldWrora 0 文章
  7. 董伟 0 文章
  8. 信奥达人 0 文章