`
huobengle
  • 浏览: 862175 次
文章分类
社区版块
存档分类
最新评论

[算法]在数字N中删除S个数,使其最终余下的值最小

 
阅读更多

输入一个高精度的正整数N(N不超过200位),去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数:编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数字最小

private string Calc(string N, int S)
{
if (S <= 0) return N;
char c = N[0];
int j = 0;
for (int i = 1; i < N.Length - 1; i++)
if (c > N[i])
return Calc(N.Remove(j, 1), S - 1);
else if (c < N[i])
{
c = N[i];
j = i;
}
return N;
}

/*---演算过程
N=234[9]0293847213847958723489502319482035345983958727351925,S=20
N=23[4]0293847213847958723489502319482035345983958727351925,S=19
N=2[3]0293847213847958723489502319482035345983958727351925,S=18
N=[2]0293847213847958723489502319482035345983958727351925,S=17
N=02[9]3847213847958723489502319482035345983958727351925,S=16
N=023[8]47213847958723489502319482035345983958727351925,S=15
N=0234[7]213847958723489502319482035345983958727351925,S=14
N=023[4]213847958723489502319482035345983958727351925,S=13
N=02[3]213847958723489502319482035345983958727351925,S=12
N=0[2]213847958723489502319482035345983958727351925,S=11
N=0[2]13847958723489502319482035345983958727351925,S=10
N=013[8]47958723489502319482035345983958727351925,S=9
N=01347[9]58723489502319482035345983958727351925,S=8
N=0134[7]58723489502319482035345983958727351925,S=7
N=01345[8]723489502319482035345983958727351925,S=6
N=01345[7]23489502319482035345983958727351925,S=5
N=0134[5]23489502319482035345983958727351925,S=4
N=013[4]23489502319482035345983958727351925,S=3
N=01[3]23489502319482035345983958727351925,S=2
N=012348[9]502319482035345983958727351925,S=1
*/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics