ACM 删数问题 SDUT 2072
来源:互联网 发布:手机写作软件排行 编辑:程序博客网 时间:2024/06/03 12:58
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2072.html
删数问题
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。
Input
输入有多组 每组包括原始数n,要去掉的数字数s;
Output
输出去掉s个数后最小的数
Example Input
178543 4
Example Output
13
注意前导0,和输出0的情况重叠
贪心策略:每次删去有高位到低位递增区间的末尾或者递减区间的首位,实现局部贪心
#include <iostream>#include <string>#include <cstring>#include <cstdio>using namespace std;void modify(char (&str)[102]) { int num = 0; while (str[num]=='0') num ++; int x = 0; for (int j = num ; str[j-1]!='\0'; j++) { str[x++] = str[j]; }}int main() { char arr[102]; while ((gets(arr) != NULL) && arr[0] != '0') { int n,i; cin >> n; getchar(); int len = strlen(arr); if (n==strlen(arr)) { cout << "0" << endl; break; } //数字完全删除的情况 while (n) { i=0; while (i<strlen(arr)&&arr[i]<=arr[i+1]) i++; for (int j = i; j<=strlen(arr); j++) arr[j]=arr[j+1]; n--; } //贪心策略 if (arr[0]=='0') modify(arr); //除去前导0 if (arr[0]=='\0') { cout << "0" << endl; break; } //前导0,输出0的情况 printf("%s\n",arr); } return 0;}
0 0
- ACM 删数问题 SDUT 2072
- SDUT 2072 删数问题
- sdut 删数问题
- [SDUT](2072)删数问题 ---贪心
- 删数问题 (sdut oj)
- SDUT--枚举(删数问题)
- SDUT 贪心算法 删数问题
- sdut.acm活动选择问题
- sdut.acm区间覆盖问题
- sdut acm 区间覆盖问题
- sdut 2072 删数问题 删除几个数字之后求最大数
- 删数问题(贪心问题)SDUT OJ题
- sdut acm 3n+1数列问题
- Java sdut acm 1791 集合相等问题
- Java -- Sdut acm 1791 集合相等问题
- [ACM] SDUT 2883 Hearthstone II (第二类Stiring数)
- acm水仙花数问题
- ACM水题-----删数问题
- 1.26.6
- codefoces A. k-th divisor
- 字符串常量池
- Python零基础入门之三十Text控件
- 基本引用类型和对象引用类型的区别
- ACM 删数问题 SDUT 2072
- Elasticsearch上手——结合Kibana的安装配置
- Markdown 语法介绍
- JavaScript中闭包的概念及用法
- VS2013配置GSL运算库
- 冒泡排序和插入排序的区别
- servlet和jsp交互的第一个典型例子
- 5. 标题:有理数类
- hibernate常见异常