日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

有重复元素的排列问题pascal题解

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有重复元素的排列问题pascal题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
var
l,i,tj:longint;
a:array['a'..'z']of longint;
x,c:char;
b:array[0..500]of char;
procedure print;
begin
? ? for i:=1 to l do//要一個一個輸出,不能直接write(b),不然就輸出不出來
? ? write(b[i]);
? ? writeln;//換行
? ? inc(tj);
end;
procedure search(x:char;dep:longint);//dep是當前要填的位置
var
i:char;
begin
? ? if dep>l then//如果填的位置大于長度那么就輸出
? ? begin
? ? ? ? print;
? ? ? ? exit;
? ? end;
? ? for i:=x to 'z' do
? ? if a[i]>0 then//如果i字符還有沒填的話,就回溯
? ? begin
? ? ? ? b[dep]:=i;//填數
? ? ? ? dec(a[i]);//i字符的數量-1
? ? ? ? if a[x]>0 then search(x,dep+1) else search(chr(ord(x)+1),dep+1);//如果x字符在原串中還有出現次數就繼續搜
? ? ? ? inc(a[i]);//回溯
? ? end;
end;
begin
? ? readln(l);// l個元素,也是排列的長度
? ? for i:=1 to l do
? ? begin
? ? ? ? read(x);
? ? ? ? inc(a[x]);//統計每個元素有幾個
? ? end;
? ? tj:=0;//tj是排列總數
? ? c:='a';
? ? while a[c]=0 do c:=chr(ord(c)+1);//找到原串中第一個在26個字母中出現的字符
? ? search(c,1);//搜索
? ? write(tj);//輸出數量
end.

轉載于:https://www.cnblogs.com/YYC-0304/p/9500259.html

總結

以上是生活随笔為你收集整理的有重复元素的排列问题pascal题解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。