c语言删数问题【问题描述】通过键盘输入一个正整数n,去掉其中任意s个数字后,剩下的数字按原左右次序,将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/27 00:50:45
![c语言删数问题【问题描述】通过键盘输入一个正整数n,去掉其中任意s个数字后,剩下的数字按原左右次序,将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数](/uploads/image/z/14275880-8-0.jpg?t=c%E8%AF%AD%E8%A8%80%E5%88%A0%E6%95%B0%E9%97%AE%E9%A2%98%E3%80%90%E9%97%AE%E9%A2%98%E6%8F%8F%E8%BF%B0%E3%80%91%E9%80%9A%E8%BF%87%E9%94%AE%E7%9B%98%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B4%E6%95%B0n%2C%E5%8E%BB%E6%8E%89%E5%85%B6%E4%B8%AD%E4%BB%BB%E6%84%8Fs%E4%B8%AA%E6%95%B0%E5%AD%97%E5%90%8E%2C%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97%E6%8C%89%E5%8E%9F%E5%B7%A6%E5%8F%B3%E6%AC%A1%E5%BA%8F%2C%E5%B0%86%E7%BB%84%E6%88%90%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%E6%AD%A3%E6%95%B4%E6%95%B0.%E7%BC%96%E7%A8%8B%E5%AF%B9%E7%BB%99%E5%AE%9A%E7%9A%84n%E5%92%8Cs%2C%E5%AF%BB%E6%89%BE%E4%B8%80%E7%A7%8D%E6%96%B9%E6%A1%88%2C%E4%BD%BF%E5%BE%97%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97%E7%BB%84%E6%88%90%E7%9A%84%E6%96%B0%E6%95%B0)
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));
}
}