首页 > 试题广场 >

牛牛的字符串

[编程题]牛牛的字符串
  • 热度指数:491 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一个长度为N的由小写字母组成的字符串S,还有一个整数K。在每一步中,可以选择一个位置 i 并在 i 和 i + K 处交换字符(i + K < N)并且,即交换之后,新形成的字符串应字典序大于旧字符串。为了尽可能交换尽量多的步数。最多可以交换多少步呢。
示例1

输入

"cbexa",2

输出

2

说明

cbexa -> cxeba -> excba 步数为2

备注:
 

运行超时    
int num1 = strlen(s);
    char s1[num1];
    strcpy(s1,s);
    int bj = 1;
    int num = 0;
    while(bj)
    {
        bj = 0;
        for(int i = 0 ;i + k < num1;i++)
        {
            if(s1[i + k] > s1[i])
            {
                char t = s1[i + k];
                s1[i + k] = s1[i];
                s1[i] = t;
                num++;
                bj = 1;
            }
        }
    }
    return num;
}

发表于 2021-09-02 20:20:47 回复(0)