删数问题贪心算法实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

个新的字符串。然后回到首位,按上述规则再 删除下一个数字。

#include<iostream> using namespace std; #include<string.h> int main() { int k,i,j; char a[30]; cout<<"输入要操作的数字:"; cin>>a;
删数问题贪心算法实现
问题描述: 一个n位正整数a,删去其中的k位,得到一个 新的正整数b。设计一个贪心算法,对于给定 的a和k,得到最小的b。 贪心算法思想: 每一步总是选择一个是使剩下的数最小的数字 删除,即按高位到低位的顺序搜索,若各位数 字递增,则删除最后一个数字;否则删除第一 个递减区间的首字符,这样删一位便形成了一

测试例: (1)2315628 输入要操作的位数:2315628 输入要删除的位数K:4 128 (2)123456 输入要操作的位数:12345 输入要删除的位数K:3 123 (3)12 输入要操作的位数:12 输入要删除的位数K:3 删除位数大于数字本身位数

ቤተ መጻሕፍቲ ባይዱ
cout<<"输入要删除的位数K:";
cin>>k; if(k>strlen(a)) { cout<<"删除位数大于数字本身位数"<<endl; return 0; } while(k) { i=0; while(i<strlen(a)&&a[i]<=a[i+1]) i++; for(j=i;j<strlen(a);j++) a[j]=a[j+1]; k--; } cout<<a<<endl; return 0; }
相关文档
最新文档