拼多多第三题回溯超时
#include <iostream>
#include <vector>
using namespace std;
void backtrack(int& res,vector<int>& v,int i,int target,int n)
{
//超出范围
if(target<0) return;
if(target>0&&n==0) return;
//符合条件
if(target==0&&n==0)
{
res =1;
return;
}
for(int start=i;start<=target;start )
{
//到最后一个
if(n==1)
{
v.push_back(target);
backtrack(res,v,start 1,0,n-1);
v.pop_back();
return;
}
//第1第2
v.push_back(start);
backtrack(res,v,start 1,target-start,n-1);
v.pop_back();
}
}
int main()
{
int n,s;
int res=0;
vector<int> v;
cin>>n>>s;
backtrack(res,v,1,s,n);
cout<<(res/2)%1000000007*(res/2)%1000000007<<endl;
return 0;
}
回溯超时😭有AC的大佬吗😂#拼多多##笔试题目#
#include <vector>
using namespace std;
void backtrack(int& res,vector<int>& v,int i,int target,int n)
{
//超出范围
if(target<0) return;
if(target>0&&n==0) return;
//符合条件
if(target==0&&n==0)
{
res =1;
return;
}
for(int start=i;start<=target;start )
{
//到最后一个
if(n==1)
{
v.push_back(target);
backtrack(res,v,start 1,0,n-1);
v.pop_back();
return;
}
//第1第2
v.push_back(start);
backtrack(res,v,start 1,target-start,n-1);
v.pop_back();
}
}
int main()
{
int n,s;
int res=0;
vector<int> v;
cin>>n>>s;
backtrack(res,v,1,s,n);
cout<<(res/2)%1000000007*(res/2)%1000000007<<endl;
return 0;
}
回溯超时😭有AC的大佬吗😂#拼多多##笔试题目#