poj 1775 简单搜索

这道题反复做了好多次才ac,可能就是好久不做题的原因,第一次超时,数组开得太太太大了,后来输出错误,忘加!=EOF了,后来一直wa,后来看网上代码,知道自己题目理解错了,首先0的阶乘是1,其次俩个小的数的阶乘不可能大于那个大数的,所以网上有人用dfs,把题目想难了,不过我很欣赏dfs,这道题用dfs好像有点小题大做了,但是可以避免我上述的那种情况,就是假如俩个小数的阶乘大于大数的阶乘,用dfs就完全没有错误,我头开始没想到这么搜索,其次,不是连续的阶乘相加,是随意的

1 #include <stdio.h>
2 int main()
3 {
4     int a[12];
5     int i,j,n,f; 6     a[0]=1;
7     a[1]=1;
8     for(i=2;i<12;i++)
9     {
10         a[i]=i*a[i-1];
11     }
12     while(scanf("%d",&n)!=EOF&&n>=0)
13     {
14         if(n==0)
15         {
16             printf("NO\\n");
17             continue;
18         }
19         for(i=11;i>=0&&n>0;i--)
20         {
21             if(n>=a[i])
22                 n-=a[i];
23         }
24         if(n==0)
25             printf("YES\\n");
26         else
27             printf("NO\\n");
28     }
29     return 1;
30 }
31

还有博客园怎么这么贴代码了?是不是我这里太卡了?顺便说一句,今天晚上网络不卡了,太好了,后天就比赛了,今天终于拿到学校给的钱了,只有做acm才能使我安心。。。。。。

原文地址:https://www.cnblogs.com/anderson0/p/1730026.html