问题 C: 删数问题
时间限制: 1 Sec 内存限制: 128 MB
提交: 27 解决: 8
[提交] [状态] [讨论版] [命题人:admin]
题目描述
给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n和k,设计一个算法,找出剩下数字组成的新数最小的删数方案。
输入
输入一个长度为n的数字和一个k(n<=1000,k<1000,保证n>k)
输出
输出删掉k位之后的数(可能存在前导0 比如 0123)
样例输入
178543 4
样例输出
13
对于这个题目,有好几种方法,可以递减删除也可以递增删除,递减就是删除第一个,递增就是删除递增的第一个数,然后再让数组移动就行,但是提交了两次没有通过们真是丢人!后来发现,自己在判断时,居然没有考虑数值相等的情况,很多时候I及太想当然了!
#include <iostream>
#include <algorithm>
#include<string.h>
using namespace std;
char number[1005];
int k;
void Delet_Number(){
int i,j;
scanf("%s",number);
scanf("%d",&k);
if(k==strlen(number)){
printf("0");
return ;
}
while(k>0) {
i=0;
while(i<strlen(number) && number[i]<=number[i+1])
i++;
for(j=i;j<strlen(number);j++)
number[j]=number[j+1];
k--;
}
printf("%s",number);
}
int main(){
Delet_Number();
return 0;
}