删数问题

  1. 问题描述:删除一段数中的n个数字,使得剩下数组成的数,值最小
  2. 算法思想:遇到一个递增的子序列,则删除最后的一个数字,若为递减的子序列则不断地覆盖第一个数字。
  3. 代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int n, a, i, k;
    char s[200];
    while(scanf("%s %d", s, &n) != EOF)
    {
        for(k = 1; k <= n; k++)
        {
            a = strlen(s);
            i = 0;
            while(i < a && s[i] <= s[i + 1])//字符串的最后一个是结束标志  它的Ascall 码值为 0
            {
                i++;
            }
            while(i < a)
            {
                s[i] = s[i + 1];// 若为升序,则将 最后一个 的Ascall 吗(结束符)赋给 前面 所以 a字符串的 长度减一
                i++;			//若为降序 则覆盖前面的数值 
            }
        }
        a = strlen(s);
        i = 0;
        while(i < a - 1 && s[i] == '0')
                i++;
        for(; i < a; i++)
        {
            printf("%c", s[i]);
        }
        printf("\n");
    }
    return 0;
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务