一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小
2014-03-06 10:56
411 查看
例如: 8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。
方法看图片,从前往后找,每次访问一位,比较该位前边的数,如果比该位大,果断干掉,可以使用栈来完成此操作
程序实现:
更加详细的讲解请参考:http://www.cnblogs.com/kaituorensheng/p/3582857.html
方法看图片,从前往后找,每次访问一位,比较该位前边的数,如果比该位大,果断干掉,可以使用栈来完成此操作
程序实现:
#include <iostream> #include <ctime> using namespace std; int main() { int n,k; cout<<"请输入位数n和k"<<endl; cin>>n>>k; //构造n位数 int *num = new int ; srand(time(NULL)); for(int i=0; i<n; i++) { num[i] = rand()%10; } //输出n位数 cout<<"输出原数字"<<endl; for(int i=0; i<n; i++) { cout<<num[i]; } //对n位数进行操作 int *temp = new int ; int rear=0,count=0; //count表示去掉数的个数 temp[rear]= num[0]; int m=1; for(; m<n && count<k; m++) { temp[++rear] = num[m]; while((rear>0) && (temp[rear] < temp[rear-1]) && (count<k)) { temp[rear-1] = temp[rear]; count++; rear--; } } //cout<<m<<endl; while(m<n) { temp[++rear] = num[m++]; } //输出结果 cout<<endl<<"输出结果"<<endl; for(int i=0; i<n-k; i++) { cout<<temp[i]; } cout<<endl; return 0; }
更加详细的讲解请参考:http://www.cnblogs.com/kaituorensheng/p/3582857.html
相关文章推荐
- 一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小
- 一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小
- 陈利人 面试题 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。
- 输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对所给的n和s,寻找一种方案使得剩下的数字组成的新数最小。
- 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。例如,a=13243221,k=5,输出:12
- hdu 3183 A Magic Lamp(给一个n位的数,从中删去m个数字,使得剩下的数字组成的数最小(顺序不能变),然后输出)
- hdu 3183 A Magic Lamp(给一个n位的数,从中删去m个数字,使得剩下的数字组成的数最小(顺序不能变),然后输出)
- 给定一个N位数,得到一个N-k位的数中最小的数
- 有一个14位数。由 2个1 2个2 2个3 2个4 2个5 2个6 2个7组成!其中,两个1中有一个数字,2个2中有2个数字……2个7中有7个数字入:73625324765141
- Algorithm --> n位数去掉k位后找最小数
- 输入一个正整数n,返回一个最小正整数m(m至少是2位数),使得m的各位乘积等于n,例如输入36,输出49,输入100,输出455,对于某个n不存在这样的m,请返回-1。
- 阿里校招笔试——给定一个字符串S和有效单词的字典D,请确定可以插入到S中的最小空格数,使得最终的字符串完全由D中的有效单词组成,并输出解。
- 17、有一个由大小写组成的字符串,现在需要对他进行修改, 将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序)
- 给定一颗二叉树,以及其中的两个node(地址均非空),要求给出这两个node的一个公共父节点,使得这个父节点与两个节点的路径之和最小。
- 2018阿里校招笔试——给定一个字符串S和有效单词的字典D,请确定可以插入到S中的最小空格数,使得最终的字符串完全由D中的有效单词组成,并输出解。
- 给定一个N位的数,返回由这N个数组成的比原来的数大数中的最小的数
- JS算法:一个长度为n的数组存了1-n这n个整数,打乱顺序后去掉了其中三个,求去掉的三个数。
- 给定一个N位的数,返回由这N个数组成的比原来的数大数中的最小的数
- 给定一个N位数,得到一个N-k位的数中最小的数
- 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。