大佬看下我的思路哪里有问题?
查看原帖
大佬看下我的思路哪里有问题?
332549
幽灵特工楼主2020/10/31 09:45

用一个vector s存第一行输入,然后从s[0]开始(即最高位),从数字9开始删。每删一个数k--。如果删完所有9,k还有剩余,那么继续删8,7,6,以此类推。

代码

#include <bits/stdc++.h>
using namespace std;
string n;
vector <char> s;
long long k;
void solve(int w){
  char x=char(w);
  for(int i=0;i<s.size()&&k>0;i++){
  	if (s[i]!=x){
  		s.push_back(n[i]);//不删 
  	}else k--;//删 
  }
  while(k>0){
  	solve(w--);//删下一个数字 
  }
}
int main(){
  cin>>n;
  for(int i=0;i<n.length();i++){
  	s.push_back(n[i]);
  }
  cin>>k;
  solve(9);
  for(int i=0;i<s.size();i++){
  	cout<<s[i];
  }
}
2020/10/31 09:45
加载中...