一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小

例如: 8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。

方法看图片,从前往后找,每次访问一位,比较该位前边的数,如果比该位大,果断干掉,可以使用栈来完成此操作

一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小_第1张图片

程序实现:

 

#include 
#include 


using namespace std;

int main()
{
	int n,k;
	cout<<"请输入位数n和k"<>n>>k;

	//构造n位数
	int *num = new int[n];
	srand(time(NULL));
	for(int i=0; i0) && (temp[rear] < temp[rear-1]) && (count


更加详细的讲解请参考:http://www.cnblogs.com/kaituorensheng/p/3582857.html

你可能感兴趣的:(c++)