贪心3--删数问题

Posted 范仁义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心3--删数问题相关的知识,希望对你有一定的参考价值。

贪心3--删数问题

一、心得

 

二、题目及分析

 

题目:

键盘输入一个高精度的正整数n(<=240位),

去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。

编程对给定的n和s,寻找一种方案,使得剩下的数最小。

Simple Input
 178543
 4
Simple Output
 13
 
思路:
每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字

三、代码及结果

 

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 int main(){
 5     string s;
 6     cin>>s;
 7     int n;
 8     cin>>n;
 9     int len=s.length();
10     int a[300];
11     for(int i=0;i<len;i++){
12         a[i+1]=s[i]-\'0\';
13     }
14     for(int i=1;i<=n;i++){
15         for(int j=1;j<len;j++){
16             if(a[j]>a[j+1]){
17                 for(int k=j;k<len;k++){
18                     a[k]=a[k+1];
19                 }
20                 break;
21             }
22         }
23         len--;
24     }
25     for(int i=1;i<=len;i++){
26         cout<<a[i];
27     }
28     cout<<endl;
29     return 0;
30 } 

以上是关于贪心3--删数问题的主要内容,如果未能解决你的问题,请参考以下文章

删数问题(贪心)

删数问题-贪心

贪心删数问题

PTA 删数问题 (30 分) 贪心

P1323 删数游戏(技巧)

解题报告—— 2018级2016第二学期第五周作业 删数问题