首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

急求:求最小值算法,该怎么处理

2012-03-14 
急求:求最小值算法键盘输入一个高精度的正整数N(N不超过200位),去掉其中任意S个数字后剩下的数字按原左右

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

十分感谢!

[解决办法]
从左往右挨个取数据,每取一个数把剩下的数进行比较把最大的数比较出来

再依次重复S次,取最后的那个大数

总共比较N*S次,麻烦了点,不过肯定可以的.
[解决办法]
C#写了一个

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;
}


Calc( "23490293847213847958723489502319482035345983958727351925 ", 20);

012348502319482035345983958727351925



[解决办法]
N=412351235
min=121235

可以递归 写个思路 太久不写程序
getMin(n,r) //从n位数选出r位 使其最小
{
选出前n-r最小位,输出之;
get(截去最小位前的所有位的n,r-1);
}

[解决办法]
实际上只需要比较最高位,最高位相同比较第二位……直到没有相同的。
[解决办法]
这是几个结果:
Delete 20 Bit From:23490293847213847958723489502319482035345983958727351925 ==> 000125
Delete 3 Bit From:412351235 ==> 11235
Delete 5 Bit From:100412351235 ==> 0011235

[解决办法]
1. 如果S=0结束;
2. 如果第i个数字大于第i+1个数字, 删除第i个,S--;
3. 当以上两个条件都不满足时, 删除结尾的若干数字,完成。

热点排行