| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3602 人关注过本帖
标题:删除数字问题(不会)
取消只看楼主 加入收藏
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
 问题点数:0 回复次数:5 
删除数字问题(不会)
老师布置了一个问题,要个c语言程序,问题是这样。
输入一个大数字(例如:4521689),再输入一个小点的数字(例如:4)。在这个4521689中删除4个数字,使得留下的数字最小,本题的话,结果应该为:168
再如:65192264 输入4
得到:1224
关于0的问题,他没有提到,比如563012 输入3,应该得到012呢还是301。这个问题我不清楚,所以也一直不会做。
搜索更多相关主题的帖子: 数字 删除 c语言 本题 小点 
2006-05-11 18:40
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 

删数问题

键盘输入一个高精度的正整数N(此整数中没有‘0’),去掉其中任意s个数字后,剩下的数字按从左到右次序将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小.

输入 n,s

输出 输出删数后的正整数.

【输入】

n

s

【输出】

最后剩下的最小数。

【样例输入】

175438

4

【样例输出】

13

这个是老师布置的原题目。我写了一个,但是有问题。谁帮俺改改,谢谢了!
#include <stdio.h>
#include <string.h>
#define M 10
main()
{int i,j,t=0,m,n;
char *p;
char b[M];
printf("input a string:");
gets(b);
m=strlen(b);
printf("input a data n=");
scanf("%d",&n);
if(m<=n)printf("error");
else
{p=b;
for(i=0;i<m-n;i++)
{if(*p>=*(p+1))
{for(j=0;j<m-i-1;j++)
{*p=*(p+1);
p++;
}
*p=0;
p=b;
t++;
if(t==n)break;}
else p++;}
p=b;}
for(i=0;i<m-n;i++,p++)
printf("%d",*p);
getch();
}


2006-05-12 19:15
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#define M 10
main()
{int i,j,t=0,m,n;
char *p;
char b[M];
printf("input a string:");
gets(b);
m=strlen(b);
printf("input a data n=");
scanf("%d",&n);
if(m<=n)printf("error");
else
{p=b;
for(i=0;i<m-n;i++)
{if(*p>=*(p+1)) /*比较前两位大小*/
{for(j=0;j<m-i-1;j++) /*for循环目的,要是第一个大于第二个,则把第一个数后面的数依次赋给前面的,从而覆盖了第一个大数*/
{*p=*(p+1);
p++;
}
*p=0; /*给最后一个位置赋0*/
p=b;/*指针回到前面,重新开始。*/
t++;
if(t==n)break;}
else p++;}
p=b;}
for(i=0;i<m-n;i++,p++) /*做完以上程序之后,现在想要的几个数肯定在数组前面,而后面全是0,然后我就打印出想要的几个就行。*/
printf("%d",*p);
getch();
}


上面就是我的思想,其实用数组来做我也会,就像4楼的办法,不过我就想用一下指针。
我的思想说明白了,那位兄弟能按照这个思想做一个程序吗? 谢谢

2006-05-13 08:53
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 

soft_wind :
确实是我没说清楚,就是要顺序不变,你的程序我刚才运行了一下,没有问题, 谢谢了!
还有 论坛 你编的程序我运行了几组数据,有的不能正确得到结果,不信你可以运行一下
621534
2
得到结果是1000,而并不是1534


2006-05-14 09:09
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 
还有luo113927,
你说的那个方法,我们班同学也有用的,我是这编了一下还是可以用的,不过那个方法应该属于动态规划,我想用贪心算法。不过还是谢谢你!

2006-05-14 09:11
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 
soft_wind :
你能不能把你的程序再修改一下,顺便把0也考虑进去,就像我在一楼说的,比如563012 输入3,应该得到301,而不是012。谢谢了!!

2006-05-14 09:18
快速回复:删除数字问题(不会)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017715 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved