Problem Description

键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。
Input

输入有多组 每组包括原始数n,要去掉的数字数s;
Output

输出去掉s个数后最小的数
Example Input

178543 4
Example Output

13
Hint

Author

代码:

#include <stdio.h>
#include <string.h>
int main()
{char n[101];    //将输入的数字存储为字符串形式int s,len,i;    //s:删去的数字数   len:输入数字的长度   i:计数变量while(~scanf("%s %d",n,&s))    //获取原始数字和将要删除的数字{while(s>0)       //s=0时,删数结束。while循环执行逐个删数{i = 0;          //从i=0开始遍历,寻找第一个递减数列。len = strlen(n);      //储存n的位数while(i<len&&n[i]<=n[i+1])   //当i<len并且n[i]<=n[i+1]时,不构成递减数列,i++i++;while(i<len)      //构成递减数列时,删除n[i],之后字符依次前移{n[i]=n[i+1];i++;}          //i=len-1时,字符迁移完毕。s--;           //继续删除数字}
//删除数字结束后,即s=0时
//有时会出现以下情况,删除过程中有可能会使原来包含零的数字串变成若干个以0开始的序列,如80056,第一次删除8后,变成0056,高位的0是无效的,程序中应该处理掉。i=0;len = strlen(n);while(n[i]=='0'&&i<len)    //从i=0开始遍历,直到不为0的那一位i++;if(i==len)                //如果i=len时还没有出现不为零的位,则该数为零。printf("0\n");else                       //找到不为0的那一位,当作首位,输出。{for(i=i;i<len;i++)printf("%c",n[i]);printf("\n");}}return 0;}

小知识
原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

转载于:https://www.cnblogs.com/lushans/p/6731257.html

SDUT 贪心算法 删数问题相关推荐

  1. python贪心算法求删数问题_贪心算法删数问题

    删数问题 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数.对于给定的n和k,设计一个算法,找出剩下数字组成的新数最少的删数方案. 输入示例: 178543 4 输出 ...

  2. 贪心算法--删数问题

    一个数178543,删除其中的K数,是这个数最小,例如k=4,结果为13. 推理当删除一个数时是这个数最小,那就是8, 当删除2个数时,是这个数最小就是7 当删除第k个数时,最小就是依次删除最大的数, ...

  3. (经典贪心)— 删数问题

    B:删数问题 时间限制: C/C++ 1000ms; Java 2000ms 内存限制: 65535KB 通过次数: 3 总提交次数: 6 问题描述 键盘输入一个正整数N,去掉其中任意S个数字后剩下的 ...

  4. Python(贪心算法)问题 D: 删数问题_输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。

    问题 D: 删数问题 题目描述 输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数. 编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小. 输出新的正整 ...

  5. 贪心算法——洛谷(P1106)删数问题

    首先,我们先举一个例子: 1 7 5 4 3 8 删的个数:4 不难看出: 第一次删的应该是 7 第二次删的应该是 5 第三次删的应该是 4 第四次删的应该是 8 那么,剩下的数就是"13& ...

  6. 扔掉你的算法书!1小时零基础拿下贪心算法!(17道题+万字儿童级解析+数十张图解)

    前几天的文章中我写到了一些关于零基础学习回溯算法的一些步骤和细节,在刷题的过程中发现了很多贪心算法的题很有趣,于是今天他来了,准备了好17道题来供大家共同学习,并附上了十分详细的题解,与附带了注释的优 ...

  7. 1145: 零起点学算法52——数组中删数II

    1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lld Submitted: 29 ...

  8. 算法分析与设计:贪心算法实现最少硬币找钱问题(支付+找零共花费硬币数最少)

    硬币找钱问题 Problem Description 设有六种不同面值的硬币,各硬币的面值分别为 5分,1角,2角,5角,1元,2元.现要用这些面值的硬币来购物和找钱.购物时可以使用的各面值的硬币个数 ...

  9. 疯子的算法总结(四)贪心算法

    一.贪心算法 解决最优化问题的算法一般包含一系列的步骤,每一步都有若干的选择.对于很多最优化问题,只需要采用简单的贪心算法就可以解决,而不需要采用动态规划方法.贪心算法使所做的局部选择看起来都是当前最 ...

最新文章

  1. swift语言的Block
  2. 将线程pid转成16进制_硬件资讯 | AMD 线程撕裂者 5000 系 CPU 将包含 16 核版本
  3. 自动化安装Cacti(1.0.1/2/3)脚本
  4. UA MATH574M 统计学习V Variable Selection: LASSO
  5. 获取iPhone型号
  6. EF调用存储过程实现分页
  7. 编写优雅代码,从挖掉恶心的if/else 开始
  8. 文件逆顺输出到新文件(三种方案)
  9. 解决sql脚本文件太大无法打开的问题
  10. Atom飞行手册翻译: 2.14 小结
  11. python携程gevent_Python协程介绍以及优缺点 Greentlet和Gevent的使用
  12. 计算机网络第8版课后习题答案整理
  13. Word中插入参考文献 自动管理
  14. Python第五天的学习分享
  15. java网课|final权限修饰符
  16. WPF ContextMenu的使用
  17. Beyond Compare文件对比工具中文网站来啦
  18. Android8.0 安装apk
  19. Python之高等数学(定积分与不定积分,重积分)
  20. 百度地图TextureMapView变黑

热门文章

  1. Linux文件基本属性
  2. 企业部署Linux应用将拥有更低的整体拥有成本
  3. iOS 自动构建套件 - flow.ci + fir.im + Coding
  4. 生成器generator
  5. [Bug]当IDENTITY_INSERT设置为OFF时,不能为表“xx”中的标识列插入显示的值
  6. Cocos2d-x3.2 场景的生命周期
  7. centos6.2下配置nfs
  8. 数据中心网络架构 — 云数据中心网络 — 新型叶脊二层网络架构
  9. 用 C 语言开发一门编程语言 — 跨平台的可移植性
  10. 我非要捅穿这 Neutron(三)架构分析与代码实现篇(基于 OpenStack Rocky)