Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45714
  • 博文数量: 25
  • 博客积分: 1160
  • 博客等级: 少尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 09:14
文章分类
文章存档

2009年(1)

2008年(24)

我的朋友
最近访客

分类: C/C++

2008-03-30 09:51:34

数字N能否表示成若干个不相同的阶乘的和

这里可以选择的阶乘为:0到9的阶乘,实际上这一题与数论无关,与搜索有关。相关题目acmzjueducn 的2358题。

    分析,由于可供选择的阶乘数量较少,直接可以利用DFS搜索来做:

A. 首先将0 ~ 9的阶乘作一个表A[10];再设置一个可以组成“和”的数组ans[N]

B.  深度优先搜索方法:

     search(n) {

         for(i = n; i <= 9; i++) {

             sum += A[i];        //求和

             如果sumans数组中不存在,则将sum插入到ans[]数组中

             search(n+1);

             sum -= A[i];         //回溯

         }

}

阅读(666) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~