求看这段程序为何超时?

#include <iostream>
using namespace std;

int a[10],n,k,ans;

int right()
{
int flag,s;
flag=0;
s=0;
for (int i=1;i<=k;i++)
s=s+a[i];
if (s==n) flag=1;
return flag;
}
void dfs(int deep,int last)
{
int tot;
for (a[deep]=last;a[deep]<=n;a[deep]++)
{
if (deep==k )
{
if (right()==1) ans++;
}
else dfs(deep+1,a[deep]);
}
return;
}
int main()
{
a[0]=-1000;
cin>>n>>k;
dfs(1,1);
cout<<ans;
}

3 条评论

  • 1

信息

ID
1117
难度
3
分类
动态规划 点击显示
标签
递交数
6168
已通过
3140
通过率
51%
被复制
14
上传者