提交时间:2024-05-27 14:34:06
运行 ID: 29799
#include<bits/stdc++.h> using namespace std; int n,k,c[114],ans; bool b[114]; vector<int> a; bool check(int x){ for (int i=0;i<a.size();i++) if (a[i]==x) return 1; return 0; } int gs(int x){ int ans=0; while (x) ans++,x/=10; return ans; } void dfs(int step,int num){ if (step==k){ if (check(num)==0) ans++,a.push_back(num); return; } for (int i=1;i<=n;i++){ if (b[i]) continue; b[i]=1; int temp=num*pow(10,gs(c[i]))+c[i]; dfs(step+1,temp); b[i]=0; } } int main(){ cin>>n>>k; for (int i=1;i<=n;i++) scanf("%d",c+i); dfs(0,0); cout<<ans<<endl; return 0; }