Sum of Factorials[上交大@2007]

//用改造一下构造集合元素的方法
//没有考虑0!导致了3次WA,但是从题意感觉是从1开始的。
#include<cstdlib>
#include
<cstdio>
#include
<cstring>

int farr[11];
bool stop=false;
void cal(int n,int sum,int cur );
int main()
{
    farr[
0]=1;
    farr[
1]=1;
    
for(int i=2;i<=10;i++)
        farr[i]
=i*farr[i-1];
    
    
int n;
    
while(~scanf("%d",&n)){
        stop
=false;
        cal(n,
0,0);
        
if(!stop)
            puts(
"NO");
    }
//end while
    return 0;
}
void cal(int n,int sum,int cur )
{
    
if(sum>|| cur>10)
        
return;
    
if(sum==n)
    {
        puts(
"YES");
        stop
=true;
        
return;
    }
    
if(!stop)
        cal(n,sum
+farr[cur],cur+1);
    
if(!stop)
         cal(n,sum,cur
+1);
}

posted on 2012-02-23 19:30 DjvuLee 阅读(139) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

统计

常用链接

留言簿

随笔分类(13)

随笔档案(19)

文章分类(2)

文章档案(1)

搜索

最新评论

评论排行榜