题目描述
给定n位正整数a,去掉其中任意k (k<=n)个数字之后,剩下的数字按原次序排列组合成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。
输入
输入的第1行是1个正整数a,第2行是正整数k。
输出
输出组成的新数的最小值。
样例输入
178543
4
样例输出
13
答案错误40%:暂时还没有找到原因,欢迎大家评论告诉我
#include<bits/stdc++.h>
using namespace std;
int a,k;
int num[10000];
int ras=0; //输入数a的位数
void get_num()
{
while((a)!=0)
{
num[ras]=a%10;
a=a/10;
ras++;
}
}
int main()
{
cin>>a>>k;
get_num();
sort(num,num+ras);
int n=ras-k;//输出数的位数
int sum=0;
int temp=n-1;//次方
for(int i=0;i<n;i++)
{
sum+=num[i]*(pow(10,temp));
temp--;
}
cout<<sum;
}
一个天才告诉我的代码:
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
string h;
int num;
cin >> h >> num;
while (num) {
for(int i=0;i<h.size();i++){
if(h[i] > h[i+1]){
h.erase(i,1);
i = -1;
num --;
if(num == 0) break;
}
}
}
cout << h << endl;
}