资源简介
问题描述:
给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列成一个新的正整数。
算法设计:
给定n (1<=n<=200)位的正整数a和k,此时,k小于n。
试着设计一个算法,找出删去k个数,剩下数字组成的新数最小的删数方案。
输入格式
可输入多组测试数据(不超过50组测试数据),每组测试数据分两行,每行一个数,数的含义如下。
第一行:正整数a(a是大于0的一个n位正整数)
第二行:正整数k
以0来结束测试数据。
输出格式
输出每组测试数据所得出的删k位数之后的最小数。
若输出的数首位是0,无须理会,0也直接输出即可。例如:024,就直接输出0
代码片段和文件信息
#include
#include
int main()
{
char a[200]={0}b[200][200];//a作为临时数组储存输入的字符串
int i=0temp;
int n=1m;
int k;
int yx=0;
scanf(“%s“&a);
while(a[0] != ‘0‘)
{
i=strlen(a);//求出数组的实际长度
scanf(“%d“&k);//输入要删掉的位数
b[x][0] = i-k;
for(y=1;y<=i;y++)//把数组的顺序倒过来
{
b[x][y] = a[y-1];
}
while(k!=0)//找出其中比前一个数大同时也比后一个数大的数,并删除
{
for(n=1;n {
if(b[x][n] > b[x][n+1])
{
if(n==1)
评论
共有 条评论