当前位置: 首页 > news >正文

PHP 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来...

 1 <?php
 2     #输入sum和n,要求输出1,2...n里所有和为sum的组合
 3     #这是一个可划分子问题问题
 4     #若用f(sum, n)表示问题的界,则元素组合共有两种情况
 5     #1. 和为sum的组合里包括n,则f(sum, n) = f(sum - n, n - 1)
 6     #2. 和为sum的组合里不包括n,则 f(sum, n) = f(sum, n - 1)
 7     #所以 f(sum, n) = f(sum - n, n - 1) U f(sum, n - 1)
 8 
 9     function combination($sum, $n, $comb) {
10         if ($n < 0 || $sum < 0) {
11             #当n < 0或者sum < 0都是不符合条件的结果
12             // print_r($comb);
13             // echo "sum: {$sum} n: {$n}<br>";
14             return;
15         }
16 
17         if ($sum < $n) {
18             combination($sum, $sum, $comb); #sum < n,则不可能需要比sum大的数来构成组合
19             return;
20         }
21         
22         #结果求得
23         if ($sum == 0) {
24             #输出元素组合
25             echo "Combination: ";
26             foreach ($comb as $val) {
27                 echo $val . " ";
28             }
29             echo "<br>";
30             return;
31         }
32 
33         #组合里包含n的情况
34         $comb[] = $n;
35         combination($sum - $n, $n - 1, $comb);
36 
37         #组合里不包含n的情况
38         array_pop($comb);
39         combination($sum, $n - 1, $comb);
40     }
41 
42     combination(10, 15, array());
43 ?>

相关文章:

  • 超凡蜘蛛侠
  • 简单的多进程Open×××前端控制程序
  • asymptote 中使用中文
  • Deprecated: Function ereg() is deprecated in
  • 家庭电力网络摄像机
  • Redis学习系列
  • 必须关注的25位知名JavaScript开发者
  • CCNP路 由 选 择 原 理
  • 伸展树的学习(二):源代码分析
  • 多线程之NSInvocationOperation
  • 内存溢出和内存泄漏的区别
  • 发文庆祝我被骗了2000块
  • java基础----泛型!
  • 实现业务系统中的用户权限管理--设计篇
  • WPF中的容器控件——Grid
  • 【EOS】Cleos基础
  • Apache的基本使用
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS中外联样式表代表的含义
  • django开发-定时任务的使用
  • docker容器内的网络抓包
  • es6--symbol
  • Golang-长连接-状态推送
  • jQuery(一)
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • php ci框架整合银盛支付
  • Python学习之路16-使用API
  • vue 个人积累(使用工具,组件)
  • 阿里云购买磁盘后挂载
  • 电商搜索引擎的架构设计和性能优化
  • 关于List、List?、ListObject的区别
  • 讲清楚之javascript作用域
  • 聊聊sentinel的DegradeSlot
  • 爬虫模拟登陆 SegmentFault
  • 学习使用ExpressJS 4.0中的新Router
  • 正则学习笔记
  • 走向全栈之MongoDB的使用
  • 1.Ext JS 建立web开发工程
  • 组复制官方翻译九、Group Replication Technical Details
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 透过事物看本质的能力怎么培养?
  • #include<初见C语言之指针(5)>
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)Linux整合apache和tomcat构建Web服务器
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET的数据绑定
  • .NET的微型Web框架 Nancy