读书人

还是一个简单的题目。求大神来看一下小

发布时间: 2013-07-04 11:45:33 作者: rapoo

还是一个简单的题目。求大神来看一下我写的哪里错了?
题目:
Description
给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a(n<100) 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。 对于给定的正整数a,编程计算删去k个数字后得到的最小数。

Input
第1 行是1 个正整数a。第2 行是正整数k。

Output
计算出的最小数(输出无前导0)


Sample Input

178543
4

Sample Output

13


我是这样写的:
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],c[100];
int b[10]={0},k,f=0;
int i,j,t;
scanf("%s",a);
t=strlen(a);
for(i=0;i<t;i++)
b[a[i]-'0']++;
scanf("%d",&k);
for(j=9;k>0;j--)
{
for(i=0;;i++)
{
if(b[j]!=0)
{
b[j]--;
k--;
}
if(b[j]==0||k==0)
break;
}
}
for(i=t-1,j=0;i>=0;i--)
{
if(b[a[i]-'0']!=0)
{
c[j]=a[i];
j++;
b[a[i]-'0']--;
}
}
for(i=j-1;i>=0;i--)
{
if(c[i]!='0')
{
for(f=i;f>=0;f--)
{
printf("%c",c[f]);
}
break;
}
}

printf("\n");
return 0;
} C
[解决办法]
不是怎么做的。。


213
1

这组数据的答案是13。。不是21。。。

读书人网 >C++

热点推荐