首先,我们先举一个例子:

1 7 5 4 3 8

删的个数:4

不难看出:

第一次删的应该是 7

第二次删的应该是 5

第三次删的应该是 4

第四次删的应该是 8

那么,剩下的数就是“13”(经过比较发现确实正确)

是如何得出规律的呢?? 我们仔细观察一下这个例子:

第一次删的数为7,和5比较,发现7跟大(简单表述)

第二次删的数为5,和4比较,发现5跟大

第三次删的数为4,和3比较,发现4跟大

第四次删的数为8,和最后一个数(应该是a[7](假设有,并为0))比较,发现5跟大

大家有木有发现规律?? 很明显,就是删去下坡数,也就是这个例子中的7(比5大)、5(比4大)、4(比3大)、8(比最后一个大(假设有,并为0))。如果您已经掌握,能么,希望您可以看懂下面的代码,本蒟蒻就不多做解释了(感谢大佬们给我的启发)

题目描述
键盘输入一个高精度的正整数N(不超过250位) ,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小。

输入格式
n (高精度的正整数)

k(需要删除的数字个数)

输出格式
最后剩下的最小数。

输入输出样例
输入 #1

175438 
4
输出 #1

13
解题代码:

#include<bits/stdc++.h>
using namespace std;
string n;//开全局变量,因为下面的自定义函数中要用到
int k;
string del(int x)//删除n字符串中第x位的字符
{string s;for(int i=0;i<n.size();i++){if(i==x)continue;elses+=n[i];//字符串可以直接相加 }return s;
}
void check(string &x)//去除前导0
{while(x[0]=='0')x=del(0);
}
int main()
{cin>>n;cin>>k;int tot=0;//计数器清零 int i=0;//字符串下标指针归零 while(1){if(n[i]>n[i+1])//若出现逆序(大的在小的前面),删除大数 {n=del(i);//删数 check(n);//去0 i=0;//每次删完都要再次从头开始扫 tot++;if(tot==k)break;}elsei++;//符合顺序,指针指向下一位下标 }for(int i=0;i<n.size();i++)cout<<n[i];if(n.size()==0)//特殊条件判断 cout<<0;return 0;
}

贪心算法——洛谷(P1106)删数问题相关推荐

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

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

  2. 洛谷——P1106 删数问题

    https://www.luogu.org/problem/show?pid=1106 题目描述 键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对 ...

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

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

  4. 贪心算法——洛谷(P1478)陶陶摘苹果

    我们看一下,在这个题里,所有苹果费力气也就是占背包空间不同,但是价值都是1.背包问题主要是为了解决拿得多却不一定价值最大,拿价值大的却可能装不下其他有价值的东西而使人陷入两难才被发明的算法.对于价值相 ...

  5. 贪心算法——洛谷(P1090)[NOIP2004]合并果子

    该题目也属于经典的贪心算法,在这里熟悉C++里优先队列的使用. 需要导入头文件:   #include<queue> 从这个问题可以深挖出神奇的哈夫曼树问题. 因为这题里合并的是二叉树,所 ...

  6. 洛谷P2426 删数

    题目描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i(1≤i≤n)个数(只能从两边删除数),剩下N-i个数,再把剩下的数按以上操作处理,直到所有的数都 ...

  7. 贪心算法——洛谷(P1094)纪念品分组

    读入之后先用sort排序,然后用两个指针一起向中间走,每次选择都尽可能的让当前状态下最大的和最小的分在一组,如果不行就最大的单独分一组,这样贪心下来就是最少分的组了.证明如下: 如果最大的a[r]不与 ...

  8. 贪心算法——洛谷(P4995)跳跳!

    很简单的一道题,就是排序之后贪心+模拟: 先将台阶的高度从小到大排序,注意0也算,但是不是输入进去的: 每次从距离 最小和最大值之间跳跃, 从最小跳到最大之后,最大值不变,最小的下标+1,从最大跳到最 ...

  9. 贪心算法——洛谷(P1803)

    这道题目官方说的是 线段覆盖 的问题,我觉得还是和区间调度一样 采取结构体存放比赛开始和结束时间,用sort排序,自定义cmp, 将结束时间从小到大排序,然后依次选择符合的,即为最终答案 此题为典型的 ...

最新文章

  1. ERP 已死,中台已凉,DDD 称王!
  2. 傅里叶变换音频可视化_Web Audio在音频可视化中的应用
  3. Oracle游标有何用,Oracle游标使用方法有哪些?
  4. python字典定义方式_Python字典常用方法及汇总
  5. 数据库服务器查询格式化显示,在数据库服务器端养成设置NLS_LANG和NLS_DATE_FORMAT环境变量的习惯...
  6. DotNet Core 介绍
  7. 解决问题__max 模型白色 材质球换没用
  8. Python学习笔记(十三)文件操作函数
  9. lib、dll文件的中函数的查看与lib、dll、pdb文件的介绍
  10. FreeImage的学习总结总结(一)
  11. 公司的苹果开发者账号续费问题
  12. 我的北京生活,2018面向新的开始
  13. html元素在模块中心显示,DW怎么设置DIV模块在页面中居中 DW如何设置网页打开绝对居中?...
  14. NetworkManager network-manager 的 /etc/NetworkManager/system-connections/*.nmconnection
  15. 12项信息安全标准发布 为解决车联网行业“顽疾”提供可靠指导
  16. JAVA美食小屋系统(JAVA毕业设计)
  17. linux自动断网,adsl自动断网的解决
  18. CreateJs-EaselJs基础
  19. 稳压二极管与肖特基二极管
  20. 13 MATLAB判别分析

热门文章

  1. MsChart5 累计柱状图 分类统计
  2. XML和JSON的比较
  3. socketmq 设置队列大小_LeetCode 622:设计循环队列 Design Circular Queue
  4. 开源优势_企业开源的10大优势
  5. 开放app开放login_开放值得付出努力吗?
  6. (7)Node.js 全局函数
  7. (6)Node.js 全局对象
  8. 项目分享 | 好牛X的开源项目,看完忍不住分享(高手作品分享)
  9. 属性 元素的内容 创建,插入和删除节点 虚拟节点
  10. Bootstrap进度条堆叠