13年7个月前IP:未同步
526685
1楼
下面是我自己写的程序
有一个大数据是在是调不出来。。
#include<stdio.h>
#include<stdlib.h>
int d[500050],f[500050],k=1;
char s[500050];
int N,K;
void deal(int a,int b,int i)//当前需要删除i个数,要在区间[a,b]中选出一个最大的数字作为该位上的数字
{
    int temp;
    if(i==0)//删除完毕,退出
    {
        for(int x=a;x<=b;x++)
            d[k++]=f[x];
        return;
    }
    int n=b-a+1;//区间长度
    int max=0;
    for(int x=0;x<=i;x++)
        if(f[a+x]>max)
        {
            max=f[a+x];
            temp=a+x;//记录当前选取数的位置
        }
    d[k++]=max;
    deal(temp+1,b,i-(temp-a));
}
void change()
{
    for(int i=0;i<N;i++)
        f[i+1]=s[i]-48;
}
int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    scanf("%d %d",&N,&K);
    scanf("%s",s);
    change();
    deal(1,N,K);
    for(int i=1;i<=N-K;i++)
        printf("%d",d[i]);
    return 0;
}
attachment icon 1.txt 54.71KB TXT 28次下载

attachment icon in.txt 97.67KB TXT 31次下载
评论
文号 / 526685

浪迹天涯
名片发私信
学术分 0
总主题 3 帖总回复 19 楼拥有证书:笔友
注册于 2012/08/11 18:30:05最后登录 2018/01/10 01:25:47
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的