题目448 寻找最大数

来源:互联网 发布:网络主播行业调查分析 编辑:程序博客网 时间:2024/05/18 23:16

   解题思路 :在可以删除的范围内(m+1)找到最大的数,删除它前面的,有两种情况:1、m为零了,n还没有遍历完,把剩余的全部放到临时数据里保存 2、数据已经遍历完了,m还不为零,就再从临时数组里面再删除m个数。

    已AC代码:

#include<cstdio>#include<cstring>using namespace std;int main(){    int t;    scanf("%d", &t);    while(t--)    {        char n[105], temp[105];        int m, mx=0, fx=0, i=0, f=0, j;        scanf("%s%d", n, &m);        while(m && mx<strlen(n))        {            for(i=mx; i<=fx+m&&i<strlen(n); i++)            {                if(n[i] > n[mx])                    mx=i;            }            temp[f] = n[mx];            f++;            m -= mx-fx;            mx++;            fx = mx;        }        if(m)        {            j= f - m;            temp[j]='\0';        }        else        {            for(int j=fx; j<strlen(n); j++)            {                temp[f] = n[j];                f++;            }            temp[f] = '\0';        }        printf("%s\n", temp);    }    return 0;}


0 0
原创粉丝点击