主题:组合排序....大家帮帮忙...在线等....
broodwarfish
[专家分:0] 发布于 2007-02-19 19:33:00
3.输入一个三位数的整数,将数字位置重新排列,组成一个尽可大的三位数。例如:输入 213,重新排列可得到尽可能大的三位数是321。
回复列表 (共7个回复)
沙发
贺天行宝 [专家分:2300] 发布于 2007-02-19 20:33:00
排个序不就行了。
板凳
游侠UFO [专家分:1200] 发布于 2007-02-19 20:35:00
这个应该比较简单嘛,比输出最小的数要容易.
算法如下:用字符串储存输入的数,然后排个序就完了.如果是输出最小值还要考虑首位不能为零.具体代码还是留给你自己想想吧,呵呵!
PS:字符之间可以直接用< 、 > 、 >= 、 <=等符号作比较,实际上就是比较的ASCII码值.
3 楼
贺天行宝 [专家分:2300] 发布于 2007-02-20 14:16:00
恩,直接用字符判也可以的
4 楼
bigchen [专家分:1940] 发布于 2007-02-20 18:45:00
var
s:string;t:char;
i,j:integer;
begin
readln(s);
for i:=1 to 2 do
for j:=i+1 to 3 do
if s[i]<s[j] then
begin
t:=s[i];
s[i]:=s[j];
s[j]:=t;
end;
writeln(s);
end.
5 楼
bigchen [专家分:1940] 发布于 2007-02-20 18:48:00
其实就是读入一个数以后
对每位数字进行排序
把ASCII码大的数字(也就是数值大)往前调
达到改变的目的
6 楼
编程黑客 [专家分:1660] 发布于 2007-02-21 22:30:00
不对,楼上的程序还需完善
还应该考虑一下2楼 游侠UFO 说的问题:首位不能为0
7 楼
游侠UFO [专家分:1200] 发布于 2007-02-23 14:02:00
[quote]不对,楼上的程序还需完善
还应该考虑一下2楼 游侠UFO 说的问题:首位不能为0[/quote]
楼主问的是找最大的情况,零始终都是最小的,所以不会出现首位为零的情况,这只可能在找最小的情况中出现.
我来回复