求各位dalao帮估一下下面代码的时间复杂度(玄关)
#include <bits/stdc++.h>
using namespace std;
int n,k,a[10],ans[105]={0};
bool vis[105];
set<vector<int> > s;
void dfs(int step){
if(step==n+1){
for(int i=1;i<=n;i++){
if(ans[i]>a[i]) return ;
}
int sum=0;
for(int i=1;i<=n;i++) sum+=ans[i];
if(sum%k==0){
vector<int> v(ans+1,ans+n+1);
s.insert(v);
}
return ;
}
for(int i=1;i<=n;i++){
if(!vis[i]){
for(int j=1;j<=a[i];j++){
ans[step]=j;
vis[j]=1;
dfs(step+1);
vis[j]=0;
}
}
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
dfs(1);
for(auto i:s){
for(auto j:i) cout<<j<<' ';
puts("");
}
}