也不知道该不该发这里来......

noncelebrity 2004-04-13 04:23:50
给定一个字符串,输出它所有的排列。

怎样实现?
谢谢!
...全文
47 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
noncelebrity 2004-05-10
  • 打赏
  • 举报
回复
自己也查了些资料看,大概理解了所谓典型的字典序.
可是还没得到解决有重复时的办法......

先结了...
whalefish2001 2004-04-14
  • 打赏
  • 举报
回复
呵呵,还没有揭贴吧.
我回头想想吧.
wlpwind 2004-04-14
  • 打赏
  • 举报
回复
用排列产生算法(组合数学书上有)。
用数组保存字符串,产生字符串长的所有排列,然后按各种排列从字符串读取字符组成各种字符串排列。
loewe 2004-04-14
  • 打赏
  • 举报
回复
上面这段代码是输出对于给定的字符串和给定的长度,输出其所有的组合

main中的int n;应该是全局变量
loewe 2004-04-14
  • 打赏
  • 举报
回复
输出字符传中指定数目的组合,无重复字符。
#include <iostream>
#include <string>

using namespace std;

string s;

void Combination(string st, int nt, string rt)
{
string rtt=rt+st[nt];
string stt=st;
stt.erase(nt, 1);
if(rtt.size()==n)
{
cout << rtt << endl;
return;
}
for(int i=nt; i<stt.size(); i++)
{
if(i>nt && stt[i]==stt[i-1])
continue;
Combination(stt, i, rtt);
}
return;
}

int main()
{
int n ;
while(cin >> s >> n)
{
for(int i=0; i<s.size(); i++)
{
if(i>0 && s[i]==s[i-1])
continue;
Combination(s, i, "");
}
}
return 0;
}
noncelebrity 2004-04-14
  • 打赏
  • 举报
回复
也没个人来看看??

给个想法也好啊!!
noncelebrity 2004-04-14
  • 打赏
  • 举报
回复
-------------------
楼上的:这样做行吗?接着重复的怎么处理??
--------------------------------------
看了一下 loewe(可怜没人爱)的程序,不怎么明白。
给几行注释吧。

谢谢!
theoldman 2004-04-14
  • 打赏
  • 举报
回复
回楼上:那么可以先做一个过滤集合,使该集合在原集合中去掉多余重复的字符,然后对该集合求排列或组合。
noncelebrity 2004-04-14
  • 打赏
  • 举报
回复
-----------------------
loewe(可怜没人爱) :
谢谢!
---------------------------------
whalefish2001(whale)
不急结吧。期待你的......
-----------------------------------------
要是考虑有重复字符呢???

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧