[从头学数学] 第26节 数学广角 搭配(一)

来源:互联网 发布:golang mgo 查询 编辑:程序博客网 时间:2024/04/28 02:50
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第三层功法的修炼,
这次要修炼的目标是[数学广角 搭配(一)]。

正剧开始:

星历2016年01月04日 10:21:46, 银河系厄尔斯星球中华帝国江南行省。

[工程师阿伟]正在和[机器小伟]一起研究第一期的数学广角,[人叫板老师]叫它搭配,[工
程师阿伟]看了一下,发现是排列组合的范畴。


这种题怎么解呢,小伟问阿伟。

这个就相当于求A(3_2) = 3 * 2=6,三个数中取两个不同数的全排列。

<span style="font-size:18px;">def tmp():    a = [1,2,3];    b = a;    count = 0;    for i in range(len(a)):        for j in range(len(b)):            if a[i] == b[j]:                pass;            else:                print('{0}{1}'.format(a[i], b[j]), end=' ');                count+=1;    print('\n');    print('一共有{0}种选择。'.format(count));    return;</span>

看看结果吧:

<span style="font-size:18px;">>>> 12 13 21 23 31 32 一共有6种选择。</span>


<span style="font-size:18px;">function myDraw() {plot.init();setPreference();var x = 100, y=50;var color = ['red', 'blue', 'orange'];var type = 3;for (var i = 0; i < type; i++) {for (var j = 0; j < type; j++) {if (i != j) {plot.setFillStyle(color[i]);plot.fillRect(x, y, 100, 30);x += 200;plot.setFillStyle(color[j]);plot.fillRect(x, y, 100, 30);plot.moveTo(x-250, y+40).lineTo(x+150, y+40).stroke();x -= 200;y += 50;}}}}</span>



这个相当于C(3_2) = 3*2/2=3

<span style="font-size:18px;">def tmp():    a = [5, 7, 9];    b = a;    count = 0;    for i in range(len(a)):        for j in range(i, len(b)):            if a[i] == b[j]:                pass;            else:                print('{0} + {1} = {2}'.format(a[i], b[j], a[i]+b[j]));                count+=1;    print('\n');    print('一共有{0}种可能。'.format(count));    return;</span>

<span style="font-size:18px;">>>> 5 + 7 = 125 + 9 = 147 + 9 = 16一共有3种可能。</span>


握手也是组合,所以是3次。


<span style="font-size:18px;">def tmp():    a = [1, 2, 5];    b = 5;    count = 0;    #求x + 2 * y + 5 * z = 5的解    i=b//a[0];    j=b//a[1];    k=b//a[2];    for i_1 in range(i+1):        for j_1 in range(j+1):            for k_1 in range(k+1):                if (i_1 + 2 * j_1 + 5*k_1 == b):                    print('{0}个一角,{1}个二角,{2}个五角可以买一个拼音本。'.format(\                        i_1, j_1, k_1));        return;</span>

<span style="font-size:18px;">>>> 0个一角,0个二角,1个五角可以买一个拼音本。1个一角,2个二角,0个五角可以买一个拼音本。3个一角,1个二角,0个五角可以买一个拼音本。5个一角,0个二角,0个五角可以买一个拼音本。>>> </span>


这里每一枚硬币都可以选择或不选择,所以有2*2*2=8种取法。

<span style="font-size:18px;">def tmp():    a = [1, 5, 10];    count = 0;    s = '';    total = 0;    for nth in range(1, 9):        i = nth;        while (i > 0):            if i > 4:                s += '一毛,';                total += 1;                i -= 4;            elif i > 2:                s += '五毛,';                total += 5;                i -= 2;            elif i > 1:                s += '一块,';                total += 10;                i -= 1;            else:                i -= 1;                print('{0}一共{1}块{2}毛。'.format(s, total//10, total%10));        s = '';        total=0;    return;</span>

<span style="font-size:18px;">>>> 一共0块0毛。一块,一共1块0毛。五毛,一共0块5毛。五毛,一块,一共1块5毛。一毛,一共0块1毛。一毛,一块,一共1块1毛。一毛,五毛,一共0块6毛。一毛,五毛,一块,一共1块6毛。</span>

本节到此结束,欲知后事如何,请看下回分解。

0 0
原创粉丝点击