没有合适的资源?快使用搜索试试~ 我知道了~
使用swap函数求解带有重复字符串的全排列
3星 · 超过75%的资源 需积分: 32 1 下载量 2 浏览量
2016-08-24
19:35:37
上传
评论
收藏 789B TXT 举报
温馨提示
试读
2页
换种思维,对122,第一个数1与第二个数2交换得到212,然后考虑第一个数1与第三个数2交换,此时由于第三个数等于第二个数,所以第一个数不再与第三个数交换。再考虑212,它的第二个数与第三个数交换可以得到解决221。此时全排列生成完毕。 这样我们也得到了在全排列中去掉重复的规则——去重的全排列就是从第一个数字起每个数分别与它后面非重复出现的数字交换。用编程的话描述就是第i个数与第j个数交换时,要求[i,j)中没有与第j个数相等的数。下面给出完整代码:
资源推荐
资源详情
资源评论
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
#define N 15
char s[N];
int cnt=0;
bool isswap(char t[],int a,int b)
{
for(int i=a+1;i<=b;i++)
if(t[i]==t[a])
return false;
return true;
}
void swap(char &a,char &b)
{
char t=a;
a=b;
b=t;
}
void pailie(char t[],int begin1,int end1)
{
if(begin1==end1){
cnt++;
printf("%s\n",t);
}
else{
for(int i=begin1;i<=end1;i++)
{
if(isswap(t,i,end1)){
#include<string.h>
#include<iostream>
using namespace std;
#define N 15
char s[N];
int cnt=0;
bool isswap(char t[],int a,int b)
{
for(int i=a+1;i<=b;i++)
if(t[i]==t[a])
return false;
return true;
}
void swap(char &a,char &b)
{
char t=a;
a=b;
b=t;
}
void pailie(char t[],int begin1,int end1)
{
if(begin1==end1){
cnt++;
printf("%s\n",t);
}
else{
for(int i=begin1;i<=end1;i++)
{
if(isswap(t,i,end1)){
资源评论
- jasoNY962018-04-06没什么特别的。。。。
shoushudao111
- 粉丝: 57
- 资源: 178
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 407000001.fasset
- J-20240402998-HTE-HTE-2947110DA-D3_整车运动控制器-电压渐变(缓升缓降)-检测报告-XS-汽车及零部件检测中心.pdf.crdownload
- Excel表格VBA-获取文件夹内所有文件路径.zip
- 文件移动.zip
- 反射源代码,源代码,源代码,源代码
- CAJViewer 9.0_x64-setup.exe
- servant C++语言框架rpc的源码实现 tools C++语言框架IDL工具的源码实现 util C++语言.7z
- 使用pyqt创建一个登录具有动态背景的登陆界面
- 实验名称 调幅波信号的解调
- 实验名称 振幅调制器(利用乘法器)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功