关于#蓝桥杯#的问题,如何解决?

题目描述
给定一个单词,请问在单词中删除 t 个字母后,能得到的字典序最小的单词是什么?
输入描述
输入的第一行包含一个单词,由大写英文字母组成。第二行包含一个正整数 t。其中,单词长度不超过 100, t 小于单词长度。
输出描述
输出一个单词,表示答案。
输入输出样例
示例 1
输入LANQIAO
3
输出AIAO
运行限制
最大运行时间:1s
最大运行内存: 128M


我的思路是先把字符转数字,然后排序(后面就是大的删除掉)然后在转字符与原来字符串的比较相同的就输出
我的样例结果是LAIA
为什么不一样啊🥹🥹
-------------——-----------------------


#include 
#include
using namespace std;
int main()
{
  string a;
  cin>>a;
  int n,i,t,j=0;
  cin>>t;
  n=a.size();
  int b[n];
  char c[n];
for(i=0;i'A';
sort(b,b+n);
for(i=0;i'A';
for(i=0;ifor(j=0;jif(c[j]==a[i])
{cout<break;}
  return 0;
}

剩下的字符的相对位置不能改变

  • 这篇博客: 简单的桶排序:初级桶排序(1)中的 这是一个简单的桶排序,桶排序就是先开一个足够大的数组全部赋值为0表示一次都没有出现然后将数据输入,在输入的时候将数字对应的数组中的数据加一,表示出现了几次。注意:这个简单的桶排序需要知道排序的范围。当要排序的范围非常非常大的时候就不要用这个方法了,因为当排序范围非常大的时候这个方法就变得很浪费空间。而且这个简单的桶排序方法只是针对整数范围并且知道排序范围而且范围比较小的情况。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<iostream>
    #include<stdio.h>
    using namespace std;
    
    int main(){
    	int num[1001] = {0},n,number;
    	cin>>n;			//输入数据的个数 
    	for(int i=0;i<n;i++){
    		cin>>number;
    		num[number]++;
    	}
    	//依次遍历从1000到0的桶 
    	for(int i=1000;i>0;i--){
    		for(int j=1;j<=num[i];j++){
    			cout<<i<<" ";			//出现了几次就打印几次 
    		} 
    	}
    	return 0; 
    }