https://www.luogu.org/problemnew/show/P2089

非常暴力的dfs,不知道不剪枝会怎么样,但是其实最多也就 $3^{10}$ ,大不到哪里去。还有一个细节就是大于序并不是字典序的逆序……233这样都没发现我是服了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long int n; set<ll> ans; void dfs(int i,int c,int res,ll sum){
res-=c;
sum=sum*+c;
if(res<)
return;
if((-i)>res||(-i)*<res)
return;
if(i==){
if(res!=)
return;
else{
ans.insert(sum);
}
}
else{
dfs(i+,,res,sum);
dfs(i+,,res,sum);
dfs(i+,,res,sum);
}
} int main(){
scanf("%d",&n);
dfs(,,n,);
dfs(,,n,);
dfs(,,n,); printf("%d\n",ans.size());
for(auto i:ans){
//cout<<i<<endl;;
ll t=i; stack<int> s;
while(t){
s.push(t%);
t/=;
} while(!s.empty()){
printf("%d",s.top());
s.pop();
if(s.empty())
printf("\n");
else
printf(" ");
}
}
}
05-11 18:07
查看更多