WA10分求调

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll vis[21],n,ans=1,sum=0;
void dfs(int k){
	if(k==0){
		if(sum==n)ans++;
		return;
	}for(ll i=1;i<=n;i++){
		if(vis[i]<2){
            sum+=i;
            if(sum>=n){
                sum-=i;
                break;
            }vis[i]++;
			dfs(k-1);
            sum-=i;
			vis[i]--;
		}
	}
}int main(){
	memset(vis,0,sizeof(vis));
    cin>>n;
    for(ll i=2;i<=n;i++)dfs(i);
	cout<<ans;
    return 0;
}
1 个赞