mtjmtj7的小站
mtjmtj7的小站
© mtjmtj7
All Rights Reserved.

划数

任意位数划掉n位是最后的数字最小

先划掉a[i]>a[i+1],如果剩余次数x,最后x为不输出(第一次划掉之后数字串升序)

#include<stdio.h> 
#include<string.h>
#include<algorithm>  
#include<vector>  
#include<iostream>  
using namespace std;  

int main()
{
	char s[1005];
	int n;
	scanf("%s",&s);
	scanf("%d",&n);
	
	int len=strlen(s);
	vector<int> a;
	for(int i=0;i<len;i++)
		a.push_back(s[i]-'0');
		
	vector<int>::iterator it;
	int cnt=0;
	int flag=0; 
	int tmp=n;
	while(tmp--)
	{
		cnt=0;
		for(int  i=0;i<a.size();i++)
		{
			cnt++;
			if(a[i] > a[i+1])
			{
				a.erase(a.begin()+cnt-1);
				flag++;
				break;
			}
		}
	}
	printf("flag:%d\n",flag);
	if(flag<n)
	{
		//剩余次数 ,最后 n-flag 个不输出 
		int ff = 0;
		for(int  i=0;i<a.size()-1;i++)
			printf("%d ",a[i]);
	}
	else
		for(int  i=0;i<a.size();i++)
			printf("%d",a[i]);
	return 0;
}

 

打赏
2018-04-09
182 阅读
暂无评论

发表评论