1321:【例6.3】删数问题(Noip1994)

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 18133     通过数: 6280

【题目描述】

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

输出新的正整数。(n不超过240位)

输入数据均不需判错。

【输入】

n

s

【输出】

最后剩下的最小数。

【输入样例】

175438
4

【输出样例】

13

【分析】

试题中正整数N的有效位数为240位,故必须用字符串来模拟。那么如何决定哪s 位被删除呢? 是不是最大的 s 个数字呢? 显然不是,大家很容易举出一些反例。为了尽可能逼近目标,我们选取的贪心策略为:每一步总是选择一个使剩下的数最小的数字删去,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字,否则删除第一个递减区间的首字符,这样删一位便形成了一个新数字串。然后回到串首,按上述规则再删下一个数字。重复以上过程s 次为止,剩下的数字串便是问题的解了。

【参考代码】

#include <stdio.h>
#include <string.h>
void del(char x[],int p)
{ int i,m; m=strlen(x); for(i=p;i<m;i++) x[i]=x[i+1]; x[m-1]='\0';
}
int main()
{ char n[241]={'\0'}; int i,m,flag,s,count=0; scanf("%s %d",n,&s); while(count<s) {flag=0;m=strlen(n);for(i=0;i<m-1;i++){if(n[i]>n[i+1]){ del(n,i); flag=1; break; }}if(flag==0) n[m-1]='\0'; count++;         }flag=0;  for(i=0;n[i]!='\0';i++)           // 删去串首可能产生的无用的零  { if(flag==1) printf("%c",n[i]); else if(n[i]!='0') { flag=1; printf("%c",n[i]); }} putchar('\n');
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1321

信息学奥赛一本通(1321:【例6.3】删数问题(Noip1994))相关推荐

  1. 信息学奥赛一本通 1321:【例6.3】删数问题(Noip1994) | 洛谷 P1106 删数问题

    [题目链接] ybt 1321:[例6.3]删数问题(Noip1994) 洛谷 P1106 删数问题 [题目考点] 1. 贪心 [解题思路] 解法1:每次找k+1个数中的最小值 假设我们从左向右扫描每 ...

  2. 信息学奥赛一本通 1244:和为给定数 通过

    我的信息学奥赛一本通个人主页:信息学奥赛一本通(C++版)在线评测系统http://ybt.ssoier.cn:8088/userinfo.php?name=15276768892 1244:和为给定 ...

  3. 信息学奥赛一本通(1187:统计字符数)

    1187:统计字符数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 11588     通过数: 6641 [题目描述] 给定一个由a-z这26个字符组成的字符串 ...

  4. 信息学奥赛一本通C++语言——1041:奇偶数判断

    [题目描述] 给定一个整数,判断该数是奇数还是偶数.如果n是奇数,输出odd:如果n是偶数,输出even. [输入] 输入仅一行,一个大于零的正整数n. [输出] 输出仅一行,如果n是奇数,输出odd ...

  5. 信息学奥赛一本通C++语言——1039:判断数正负

    [题目描述] 给定一个整数N,判断其正负.如果N>0,输出positive:如果N=0,输出zero:如果N<0,输出negative. [输入] 一个整数N(−10^9≤N≤10 ^9) ...

  6. 信息学奥赛一本通 1066:满足条件的数累加 | OpenJudge NOI 1.5 10

    [题目链接] ybt 1066:满足条件的数累加 OpenJudge NOI 1.5 10:满足条件的数累加 [题目考点] 1. 循环求和 设置加和变量s,记住要将其初始化为0.int s = 0; ...

  7. 信息学奥赛一本通 1244:和为给定数 | OpenJudge NOI 1.11 07:和为给定数

    [题目链接] ybt 1244:和为给定数 OpenJudge NOI 1.11 07:和为给定数 [题目考点] 1. 二分:查找某个数是否存在 代码模板为: while(l <= r) {m ...

  8. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

  9. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

最新文章

  1. IE9最终版透露IE10信息 或将自动在线升级
  2. 【转载】在服务器上用Fiddler抓取HTTPS流量
  3. php伪造页面url地址,php 伪造HTTP_REFERER页面URL来源的三种方法
  4. 11.2.0.2 HAIP
  5. 一个http-request的源码及改进
  6. 2018全国计算机音乐大赛一等奖,2018全国数字音乐大赛总决赛精彩无限!小学员的技能震惊评委!...
  7. [Ahoi2013]连通图
  8. 从架构设计理念到集群部署,全面认识KubeEdge
  9. FileProvider的使用
  10. Linux配置http代理
  11. 开心网游戏界面Html
  12. kafka下载注意事项
  13. laravel 语言包
  14. JS 中国标准时间转换yy-mm-dd HH:mm:ss
  15. 在BIOS中设置U盘启动
  16. 华为鸿蒙系统支持联发科,华为鸿蒙OS将采用高通和联发科处理器平台
  17. 金融经济学(王江)第四章 套利和资产定价
  18. python将多个txt合并成一个_Python实现将目录中TXT合并成一个大TXT文件的方法
  19. Windows10修改用户名、密码
  20. 光影魔术手下载|光影魔术手下载

热门文章

  1. 计算机处理负数加法,怎么让加法器实现两个负数相加
  2. 一文了解Redis持久化
  3. Servlet高级应用---Servlet与缓存
  4. 【jeecg移动开发能力】Jeecg 重磅来袭,强大移动报表配置能力,一次配置七种展现风格
  5. 数据仓库组件:HBase集群环境搭建和应用案例
  6. 架构设计 | 接口幂等性原则,防重复提交Token管理
  7. SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
  8. 读书笔记—《发现你的行为模式(钻石版)》-DiSC测试
  9. Android开发环境准备和常用命令总结
  10. Attachments to close incidents