Lianglianggogogo 2019-12-22 12:21 采纳率: 100%
浏览 238
已结题

求问:带有重复元素全排列怎么按字典序输出啊

该代码最后输出时候不是字典序,比如1 2 3就不是字典序
#include
using namespace std;
void Allc(char ary[],int,int);
bool judge(char ary[],int,int);
inline void Swap(char &x,char &y);
int count=0;
int main(){
int i,j,n;
char a[501],t;
cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
for(i=1;i for(j=1;j if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
Allc(a,1,n);
cout< return 0;
}
void Allc(char ary[],int l,int r){
if(l==r){
count++;
for(int i=1;i cout return;
}
int i,j;
for(i=l;i if(judge(ary,l,i)){
Swap(ary[i],ary[l]);
Allc(ary,l+1,r);
Swap(ary[i],ary[l]);
}
}
}
inline void Swap(char &x,char &y){
char temp=x;
x=y;
y=temp;
}
bool judge(char ary[],int x,int y){
int i,j;
if(y>x){
for(j=x;j<y;j++)
if(ary[j]==ary[y]) return false;
}
return true;
}

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2019-12-22 12:54
    关注

    这样写试试看
    #include
    using namespace std;
    void Allc(char ary[],int,int);
    bool judge(char ary[],int,int);
    inline void Swap(char &x,char &y);
    int count=0;
    int main(){
    int i,j,n;
    char a[501],t;
    cin>>n;
    for(i=1;i<=n;i++) cin>>a[i];
    for(i=1;i for(j=1;j if(a[j]>a[j+1]){
    t=a[j];
    a[j]=a[j+1];
    a[j+1]=t;
    }
    }
    }
    Allc(a,1,n);
    cout< < return 0;
    }
    void Allc(char ary[],int l,int r){
    if(l==r){
    count++;
    for(int i=1;i cout return;
    }
    int i,j;
    for(i=l;i if(judge(ary,l,i)){
    Swap(ary[i],ary[l]);
    Allc(ary,l+1,r);
    Swap(ary[i],ary[l]);
    }
    }
    }
    inline void Swap(char &x,char &y){
    char temp=x;
    x=y;
    y=temp;
    }
    bool judge(char ary[],int x,int y){
    int i,j;
    if(y>x){
    for(j=x;j<y;j++)
    if(ary[j]==ary[y]) return false;
    }
    return true;
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题