例如: 8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。
方法看图片,从前往后找,每次访问一位,比较该位前边的数,如果比该位大,果断干掉,可以使用栈来完成此操作
程序实现:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int n,k;
cout<<"请输入位数n和k"<<endl;
cin>>n>>k;
//构造n位数
int *num = new int[n];
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[n];
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

解决方法是自左向右遍历数字,每次遇到当前位比之前位大的情况,就移除该位。利用栈来辅助实现这个过程。详细解释和程序实现可参考相关博客。
位数按原来的前后顺序组成的数最小&spm=1001.2101.3001.5002&articleId=20612871&d=1&t=3&u=49b0d0115143426cb2578aea76a79064)
8796

被折叠的 条评论
为什么被折叠?



