c++基于回溯法的全排列问题的怎么优化

问题遇到的现象和发生背景

7-1 排列问题(*)
从 m (0

请编写程序,输入 m 和 n,输出从 A 开始的连续 m 个字母中任取 n 个字母的所有排列。

要求:每行输出一个排列,按字典序输出。
输入样例
3 2
输出样例
AB
AC
BA
BC
CA
CB

问题:用回溯法解决该问题有一个测试点超时,不知道怎么优化

用代码块功能插入代码,请勿粘贴截图
#include 
using namespace std;
#define Max 30
int perm[Max];
bool used[Max];
void allsort(int pos,int n,int m){
    if(pos==n)//pos与n相同输出打印组合
    {
        for (int i = 0; i < n; ++i) {
            cout<<(char)(perm[i]+'A');
        }
       cout<return;
    }
    else{
        for (int i = 0; i < m; ++i) {
        if(!used[i])
        {
            perm[pos]=i;
            used[i]= true;
            allsort(pos+1,n,m);
            used[i]= false;
        }
       }
    }
    
 
}
int main() {
    int n,m;
    cin>>m>>n;
    allsort(0,n,m);
    return 0;
}


运行结果及报错内容

img

我在博客中写过,在零基础冲国赛的第二十天