您的位置:首页 > 其它

POJ 1775

2015-06-10 16:44 197 查看
#include <iostream>
using namespace std;

int fact[] = {1,1,2,6,24,120,720,5040,40320,362880};

bool boo;

void DFS(int time,int sum);

int n;

int main()
{
//freopen("acm.acm","r",stdin);

while(cin>>n)
{
if(n < 0)
{
break;
}
boo = false;
DFS(0,0);
if(boo)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}

}

void DFS(int time,int sum)
{
if(time == 10)
{
return;
}
sum += fact[time];
if(sum == n)
{
boo = true;
return;
}
else if(sum > n)
{
return;
}
else if(sum < n)
{
DFS(time+1,sum);
if(boo)
return;
}
sum -= fact[time];
DFS(time+1,sum);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: