c语言删数问题【问题描述】通过键盘输入一个正整数n,去掉其中任意s个数字后,剩下的数字按原左右次序,将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 06:12:27
c语言删数问题【问题描述】通过键盘输入一个正整数n,去掉其中任意s个数字后,剩下的数字按原左右次序,将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数
c语言删数问题
【问题描述】
通过键盘输入一个正整数n,去掉其中任意s个数字后,剩下的数字按原左右次序,将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小.
【样例】
输入:
n=178543
s =4
输出:
最后剩下的最小数:13 .
c语言删数问题【问题描述】通过键盘输入一个正整数n,去掉其中任意s个数字后,剩下的数字按原左右次序,将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数
这是我编好的程序,不过有点暴力,呵呵.
#include <stdio.h>
#include <math.h>
int count(char *n, int s)
{
int i, j, t, x, min, sum;
t = strlen(n);
min = 9999999;///输入的数最大不超过9999999
for(x=0; x<=t-s; x++)///从头开始,计算每次跳过s位后的数据,吧最小的存起来
{
sum=0;
for(i=0; i<t; i++)
{
if(i>=x && i<x+s)///跳过其中的s位
{
continue;
}
sum = sum*10 + (n[i]-'0');
}
if(sum<min) min=sum;
}
return min;
}
int main()
{
char n[12];///把n设置成字符串,便于计算其长度
int s, i, j;
while(scanf("%s %d", n, &s)==2)
{
printf("%d\n", count(n, s));
}
}