面试问题,求解
delphi,c或java实现exe
user输入一句话;
输出单词的任意组合
如i am a good man
输出:
am i good a man
i good man a am
...
...
...
问题点数:100、回复次数:4Top
1 楼qiuanhong(练从难处练,用从易处用)回复于 2002-05-20 17:43:28 得分 5
思路:
1.计算出单词的个数n
2.利用while()循环排列组合,方法如下:
(下班了,晚上来写代码....)
Top
2 楼bjay(ben)回复于 2002-05-20 21:48:27 得分 5
分隔出每个单词,将它们编上号,比如说n个,
这道题也就是n!,1..n的排列。Top
3 楼DouDouBug(豆豆)回复于 2002-05-21 12:29:22 得分 20
递归Top
4 楼kyee(浪子阿鹏)回复于 2002-05-21 12:59:57 得分 70
只要把字符中的字符替换成字符串即可,通过数组来实现,改一下应该很容易。
// 计算全排列, 删除相同的排列
procedure StringRank(A, B: String);
var
C: Char;
S: String;
i, Len: Integer;
begin
Len := Length(A);
if Len = 0 then
StringPrint(B)
else for i := 1 to Len do
begin
C := A[i];
S := Copy(A, 1, i - 1);
if Pos(C, S) = 0 then
StringRank(S + Copy(A, i + 1, Len - i), C + B);
end;
end;
调用 StringRank('12341234', '') 即可。
至于 StringPrint(S: String) 过程应该很简单就能实现。
Top




