生成最小整数

给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。
现在从m位中删除k位(0 例如: n = 9128456, k = 2, 则生成的新整数最小为12456

数据在int范围内,最多是9位数,直接模拟做

对于数字n,删除k个数,考虑最后一次删除的数的位置,如果已知数字n的位数为m,那么最后一次删除的数的位置可能在第i位,其中,i=1,2,3,4...,m,对于某个情况,设得到的数是nn,问题就转化为了对于数字nn,删除k-1个数,最后的新整数最小值,再回到函数f(n,k),求min(nni,k-1),其中nni=删除位置分别是i=1,2,3,。。。,m的得到的数。临界条件是k=0,k=0返回对应的数字。

#include
#include
#include
#include

using namespace std;
const int MAXVALUE=1e9;
int n,k;
int dfs(int n,int k){
	int narray[12];
	int quanarray[12];
	int weishu=0;
	int base=1;
	int nn = n;
	while(n/10){
		narray[weishu]=n%10;
		quanarray[weishu]=base;
		weishu++;
		n/=10;
		base*=10;
	}
	narray[weishu]=n%10;
	quanarray[weishu]=base;
	
	if(k==0){
		//cout<>n>>k;
	printf("%d\n",dfs(n,k));
	return 0;
}

你可能感兴趣的:(算法,数据结构)