**删数问题**
来源:互联网 发布:查看一个ip绑定的域名 编辑:程序博客网 时间:2024/05/17 23:33
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。
Input
输入有多组 每组包括原始数n,要去掉的数字数s;
Output
输出去掉s个数后最小的数
Example Input
178543 4
Example Output
13
解析:
这是一道类贪心问题,此题的思路是每次删掉的数字,为第一个递减的数字,这样才能保证最后剩余的字符串代表的数字最小。
代码实现:
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int a, b, len, n; char m[123];//输入的字符串(由于长度很长,不用int或long long int) while(~scanf("%s %d", m, &b))//多组输入 { while(b--)//共删掉b个数 { a = 0; len = strlen(m); while(a<len&&m[a]<=m[a+1])//寻找第一个递减的数字 a++; while(a<len)//找到后,将其后的字符向前移动一位(相当于删掉) { m[a] = m[a+1]; a++; } }//利用此方法可以使得删掉数字后剩下的数最小 len = strlen(m);//删完后的长度 n = 0; while(m[n]=='0'&&n<len)//去掉可能存在‘000’这样的情况 n++; if(n==len)//数字为零 printf("0\n"); else//输出剩余的数字 { for(; n<len; n++) printf("%c", m[n]); printf("\n"); } } return 0;}
0 0
- 删数问题
- 删数问题
- 1298 删数问题
- 删数问题
- 【贪心】删数问题
- 【贪心】删数问题
- 删数问题 队内赛
- 删数问题
- 删数问题
- 8605 删数问题
- 删数问题
- 删数问题
- 删数问题
- 删数问题
- 删数问题
- 删数问题
- sdut2072 删数问题
- 删数问题
- sqlyog企业版 v8.32注册码
- html页面制作特殊技巧
- 移动数据和移动计算(本地计算)的区别
- css自动旋转功能
- JAVA环境变量的设置
- **删数问题**
- 磁盘分区
- 完全数
- 写给初学者15_android_基本的用户交互-点击响应
- SQL Server数据库初步
- 二叉树的最小深度
- java web自定义el函数
- 鸟哥的服务器《十一》SSH服务器
- 关于在Eclipse中部署时webapps目录下没有web应用程序的解决办法