一道排列组合的算法题

给你一个40斤的西瓜,给3个人分,有多少种分法?我用PHP实现的,代码如下

$aa = range(1,40);
$bb = array();
foreach($aa as $k=>$val){
    foreach($aa as $v){
        foreach($aa as $vl){
            $sum = $val+$v+$vl;
            if($sum == 40){
                $bb[$k][0] = $val;
                $bb[$k][1] = $v;
                $bb[$k][2] = $vl;
            }
        }
    }
}
echo ‘<pre>‘;
print_r($bb);
exit;

结果:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 38
            [2] => 1
        )

    [1] => Array
        (
            [0] => 2
            [1] => 37
            [2] => 1
        )

    [2] => Array
        (
            [0] => 3
            [1] => 36
            [2] => 1
        )

    [3] => Array
        (
            [0] => 4
            [1] => 35
            [2] => 1
        )

........

时间: 2024-10-19 14:38:48

一道排列组合的算法题的相关文章

记一道毫无思路的算法题

今天贤内给了我一道很实际的算法题,把我彻底难住了,实在想不出来,于是写此博文以记之. 背景是这样的,现在有一个付款明细的Excel,里面有为哪个发票,哪个公司应付多少钱的明细,明细数据是62条,现在知道我们已经付出的金额为Sum,请问到底哪些发票是已付款的. 这是62条明细数据: 653165.00 356029.11 220896.45 146362.00 1847670.00 3018518.91 1347553.07 145010.74 339784.84 199350.28 120611

排列组合相关算法 python

获取指定长度得所有序列 通过事件来表述这个序列,即n重伯努利实验(二项分布)的所有可能结果.例如时间a表示为: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 假设每次实验为从a中选择一个数字,那么进行n次实验,获得所有可能得序列. 比如,进行两次实验, n=2, 那么可能得结果有100个.这里因为每次实验都是相对独立的,所以每次实验的结果可能出现重复,也就是说在获得所有可能的序列中,可以存在重复得值. 递归实现,DFS(深度优先遍历) def gen_all_seque

Python排列组合简单算法实现

算法题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码: 1 for i in range(1,5): 2 for j in range(1,5): 3 for k in range(1,5): 4 if( i != k ) and (i != j) and (j != k): 5 print i,j,k 实例输出结果为: 1 2 3 1 2 4 1

排列组合生成算法

r排列生成: gen 递归层数d表示正在生成第d个元素. vis记录是否出现过. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n, r; int A[50], vis[50];//记录第i个元素是否生成过 int cnt; int rer; void output(int r) { for(int i = 0; i < r; i++) printf(

一道JS的简单算法题

今天百度了一下腾讯的前端面试题,找了好久只有找到这道题,顺便mark一下 题目是这样的:有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里,请找出丢失的数字,最好能有程序,最好算法比较快. 网上的答案有一些出入,整理如下 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transiti

w3cshool -- 排列组合去重算法挑战

function permAlone(str) { if(str.length == 1) return str; var a = str.substr(0, 1), one = [a], count = 0, toggle = true; for(var i = 0; i< str.length-1; i++) { var temp = str[i+1]; // 取出需要插入的字母 one = cha(one, temp) } // 判断数组是否有连续重复的 for(var k = 0; k<

STL_算法(17)_排列组合 next_permutation() perv_permutation()

next_permutation() prev_permutation() #include<iostream> #include<algorithm> #include<vector> // 排列组合开始之前一定要先排序 using namespace std; int main() { vector<int> ivec; ivec.push_back(1); ivec.push_back(2); ivec.push_back(3); for (vecto

C#的排列组合类

C#的排列组合类 //-----------------------------------------------------------------------------//// 算法:排列组合类//// 版权所有(C) Snowdust// 个人博客    http://blog.csdn.net/snowdust & http://snowdust.cnblogs.com// MSN & Email [email protected]//// 此源代码可免费用于各类软件(含商业软

算法题之字符串匹配问题

我最近复习一道困难程度的算法题,发现了许多有趣之处.在借鉴了他人解法后,发现从最简单的情况反推到原题是一种解锁新进阶的感觉.从递归到动态规划,思维上一步一步递进,如同一部跌宕起伏的小说,记录下来和诸君共赏之. 题目如下: 给你一个字符串?s?和一个字符规律?p,请你来实现一个支持 '.'?和?'*'?的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖?整个?字符串?s的,而不是部分字符串. 说明: s?可能为空,且只包含从?a-z?的小写字母