NBUT 1181 Big Mouth of Abyss - Kog'Maw(删k位留最大最小数)
来源:互联网 发布:李娜 歌手 知乎 编辑:程序博客网 时间:2024/06/06 01:15
题目链接:Click here~~
题意:
神一样的题意。第一遍读题完全没搞懂要干啥。
其实就是给一串数字,删除k位后,不改变原顺序,要求留下的数字最小。
解题思路:
假设原数字的长度为l,即我们需要保留 l-k 位。
由感性认识,我们知道当高位数字越小时,所得结果越小。
依据这个思路,我们采用最简单的方法,以从高位向低位的顺序,一位一位的来选择保留哪位。
对于选择每一位的时候,由于不能改变数字的原顺序,所以我们要考虑选择的范围,即要为后面的数字留下足够的位数。
比如第一次选择的时候,我们需要给后面留下 l-k-1 个位置,如果设最后的数字下标是 l-1 ,则我们只能选择区间 [0,k] 中的元素。
选择完后,我们还要记录它的位置q,因为在下一次选择的时候,我们要从上次选择的数字后面开始,即[q+1,k+1]中的元素。
一般化以后,可以先初始化q为-1,则选择的区间每次都是[q+1,k+i]。( i 表示现在选择的是第几位,最高位是0)
#include <stdio.h>#include <string.h>int main(){ int k,l,min; char s[10005],ans[10005]; while(~scanf("%s%d",s,&k)) { l = strlen(s); for(int i=0,q=-1;i<l-k;i++) { min = '9'+1; for(int j=q+1;j<=k+i;j++) { if(min > s[j]) min = s[j] , q = j; } ans[i] = min; } ans[l-k] = '\0'; puts(ans); }return 0;}
同理,我们可以知道使留下的数字最大的解法。
#include <stdio.h>#include <string.h>int main(){ int k,l,max; char s[10005],ans[10005]; while(~scanf("%s%d",s,&k)) { l = strlen(s); for(int i=0,q=-1;i<l-k;i++) { max = 0; for(int j=q+1;j<=k+i;j++) if(max < s[j]) max = s[j] , q = j; ans[i] = max; } ans[l-k] = '\0'; puts(ans); }return 0;}
- NBUT 1181 Big Mouth of Abyss - Kog'Maw(删k位留最大最小数)
- NBOJ 1181 Big Mouth of Abyss - Kog'Maw
- 删数问题(n位数,删掉k位,使其最大)
- 算法题—n位正整数去掉k(k<=n)位数字得到最小数
- python--n位数删除k位得到最小数
- 二分图最大匹配的König定理及其证明(最小点覆盖等于最大匹配数)
- HDU3046——Pleasant sheep and big big wolf(最小割最大流定理)
- HDU 3046 Pleasant sheep and big big wolf 最小割==最大流(喜羊羊)
- 【网络流】HDU3046 Pleasant sheep and big big wolf (最小割/最大流)
- 最小K数之和
- 使用优先级队列求一个大数组中的前k个最大的数(或前k个最小的数)
- 分治算法的利用例子(查找最大最小数,快速排序,查看第k小的数字)
- 给定一个N位数,得到一个N-k位的数中最小的数
- 给定一个N位数,得到一个N-k位的数中最小的数
- 互换最大最小数
- 求最大最小数
- 求最大最小数
- 最小数和最大数
- 一个获取计算机硬件信息和安装软件清单的脚本
- OPENSSL随机数生成 例程
- Java解压带密码的Rar压缩文件
- POJ 1915
- 重启数据库遇到PRCR-1079,CRS-2640
- NBUT 1181 Big Mouth of Abyss - Kog'Maw(删k位留最大最小数)
- 完全免费!!使用dot.tk和Sina SAE服务免费搭建自己的网站
- C语言基础 函数指针
- CBrowser
- 代码实现 UITableView与UITableViewCell
- java中关于switch语句的知识
- 文本输入控件wx.TextCtrl
- 结构体复制
- 函数调用