回 帖 发 新 帖 刷新版面

主题:靠~~怎么搞得? 高手帮忙~!!! 重重加分的哦~

[em6]
Problem
将一个字符组全排序
Input
一个长度小于10的字符串,该字符串由数字1~9组成。字符不会重复出现。
Output
按数字在输入串中出现的次序从小到大的顺序输出该字符组的全排序
Sample Input
132
Sample Output
1 3 2
1 2 3
3 1 2
3 2 1
2 1 3
2 3 1
这题,首先有个问题,~数组怎么可以 任意输入多长?(还 小于10!?)  想想用string又太复杂!!!!搞不来~~高手帮我搞啊~
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

回复列表 (共3个回复)

沙发

题目的意思是,输入1个到9个不同的数{也就是这个长度小于10字符串的意思}.然后把这几个数字全排列.
这是我对题目的理解.
错了,不要怪我,我也很菜~~~~

板凳

楼上的,你那么想就简单了,我也不用郁闷了。
题的意识是 不小于10个 1-9组成 的 1个字符串~~!
  它的例题123 就可以看出,,
你输入的是 1-10 个字符~
  可以是 1 ;可以是 1234 ;也可以是123456789;
   偏偏就是这点啊~~数组是先给长度再逐个填质,怎么可以一下把质填了,再根据填质的长短给出数组的长短呢???? 好郁闷哦,,高手给给给答案拉~~

3 楼

type uu=array[1..9] of integer;
var n,l,m:integer;
    a:string;
    z,k:uu;
procedure qq(var z:uu);
var i:integer;
begin
i:=0;
if n=l then
  begin
   for m:=1 to l do
    write(a[k[m]]:4);
   writeln;
  end
else
  repeat
  i:=i+1;
   if z[i]=0 then
   begin
     n:=n+1;
     k[n]:=i;
     z[i]:=1;
     qq(z);
     n:=n-1;
     z[i]:=0;
   end;
  until i=l;
end;

begin
readln(a);
l:=length(a);
qq(z);
end.

你试下~~~~~~~~
我想佐20分钟就得啦!!(不过仲未优化)
“346811725”我的Q,意的来加我!你D题目都几有建设性。

我来回复

您尚未登录,请登录后再回复。点此登录或注册