• 全部
  • 问答

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

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

怎样实现?
谢谢!
...全文
12 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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)
不急结吧。期待你的......
-----------------------------------------
要是考虑有重复字符呢???

回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-04-13 04:23
社区公告
暂无公告