?
作者:
TANTN
,
2023-07-25 18:25:02
,
所有人可见
,
阅读 134
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int n,k,a[N],num,b[N];
unordered_map<string,int> mup;
string str="";
void dfs(int u,string s){
if(u>k){
if(!mup[s]){
num++;
}
mup[s]=1;
return;
}
for (int i=1;i<=n;i++){
string p=to_string(a[i]);
string q=s+p;
if(b[i]){
continue;
}
b[i]=1;
dfs(u+1,q);
b[i]=0;
}
return ;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
str=to_string(a[i]);
b[i]=1;
dfs(2,str);
b[i]=0;
}
cout<<num;
return 0;
}