DFS + 哈希
因为刚复习完哈希表 看到这题突发奇想 感觉这些数字的排列也可以用哈希去重
#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
typedef long long ll;
const int P=131;
int n,m;
int ans;
unsigned int temp;
unordered_map<int,int>mp;
void init(){
temp=0;
ans=0;
mp.clear();
}
void dfs(int u){
if(u==n-1){
temp+=(ll)pow(P,m);
if(!mp[temp])ans++;
mp[temp]++;
temp-=(ll)pow(P,m);
return ;
}
for(int i=0;i<=m;i++){
m-=i;
temp+=(ll)pow(P,i);
dfs(u+1);
temp-=(ll)pow(P,i);
m+=i;
}
}
int main(){
while(cin>>m){
cin>>n;
init();
dfs(0);
cout<<ans<<endl;
}
}