求首尾两次都是甲取子的取法种数?
<p>桌上有N枚棋子,甲乙二人轮流取子,每次限取1至2枚。求首尾两次都是甲取子的取法种数F(N)。</p><p>N是不超过30的正整数,在A2单元格,在B2单元格求出F(N)。</p><p>要求用函数解决,无辅助单元格,不用vba及自定义名称,答对每人奖励6金币</p><p><br/>注意:不要将其看作两个人在搏弈,而是两个人随机地取1至2枚,最后是求:出现“首尾两次都是甲取子”的所有情况之和。</p><p>3楼的结果是正确的,计算结果可用3楼的代码进行验证。</p><p>3楼的代码如下:</p><p>Function ct(c As Integer) As Long<br/>Dim i As Long<br/>igetct c, 0, "", "乙:", i, False<br/>ct = i<br/>End Function</p><p>Sub igetct(iby As Integer, isum As Long, sjoin As String, sName As String, iCount As Long, blnbycel As Boolean)<br/>Dim i As Integer<br/>If isum > iby Then<br/> Exit Sub<br/>End If<br/>If isum = iby Then<br/> If sName = "甲:" Then<br/> iCount = iCount + 1<br/> 'Debug.Print sjoin<br/> If blnbycel Then<br/> Cells(iCount, "c") = sjoin<br/> End If<br/> End If<br/> Exit Sub<br/>End If<br/>For i = 1 To 2<br/> sName = IIf(sName = "甲:", "乙:", "甲:")<br/> igetct iby, isum + i, sjoin & sName & i & " ", sName, iCount, blnbycel<br/> sName = IIf(sName = "甲:", "乙:", "甲:")<br/>Next<br/>End Sub<br/>Sub mget()<br/>Dim i As Long<br/>Dim iby As Integer<br/>iby = 10<br/>igetct iby, 0, "", "乙:", i, True<br/>MsgBox "棋量:" & iby & " " & "解:" & i<br/>End Sub</p>[此贴子已经被作者于2010-4-9 21:18:50编辑过]
<p>bu hui kan kan ba</p>
<p></p><p>有点意思,</p><p>B1=ct(A1)</p><p>**** Hidden Message *****
<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>HYY514</i>在2010-3-29 22:01:00的发言:</b><br/><p></p><p>有点意思,</p><p>B1=ct(A1)</p><p></p></div><p> 结果正确</p><p>能用函数解决吗?</p>
[此贴子已经被作者于2010-3-29 22:25:24编辑过]
<p>上面代码中已有一个调用函数和一个调试程序,把代码复制到标准模块中,再在B1=CT((a1))</p><p>上面的代码是排列式的,如果你的条件是:</p><p>1。甲乙都为了争取最后一个拿走所有的棋。</p><p>2。甲先拿棋,每人每次只能拿一个或二个棋子。</p><p>求解甲胜利的所有解,就必须用以下代码:</p><p>当棋子是3时,第一个拿棋的人必输,所以当棋子3个以下时要甲胜则无解。</p><p>**** Hidden Message *****
[此贴子已经被作者于2010-3-29 23:25:05编辑过]
<p>这题有条件不够明确,有点矛盾,如果棋数不是最小局限的话,甲胜也必是建立在乙在少数量棋时失误的情况下,严格说说这题条件不完整,完全无解</p>
[此贴子已经被作者于2010-3-29 23:36:55编辑过]
<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>HYY514</i>在2010-3-29 23:10:00的发言:</b><br/><p>上面代码中已有一个调用函数和一个调试程序,把代码复制到标准模块中,再在B1=CT((a1))</p><p>上面的代码是排列式的,如果你的条件是:</p><p>1。甲乙都为了争取最后一个拿走所有的棋。</p><p>2。甲先拿棋,每人每次只能拿一个或二个棋子。</p><p>求解甲胜利的所有解,就必须用以下代码:</p><p>当棋子是3时,第一个拿棋的人必输,所以当棋子3个以下时要甲胜则无解。</p><p></p></div><p>题目理解有误,此题并非博弈,只是找出符合规则的所有可能性,甲乙只是随机地选择1个或2个,这里不讨论谁输谁赢,</p><p>ps:如果要规定最后拿完是赢的话,总棋子数只要不是3的倍数,必定第一个拿棋的人赢.</p>
<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>zhh823543</i>在2010-3-29 23:28:00的发言:</b><br/><p>题目理解有误,此题并非博弈,只是找出符合规则的所有可能性,甲乙只是随机地选择1个或2个,这里不讨论谁输谁赢,</p><p>ps:如果要规定最后拿完是赢的话,总棋子数只要不是3的倍数,必定第一个拿棋的人赢.</p></div><p></p>正是
<p>实际上在3楼已经回答正确了,不过没有按题目要求纯粹用公式解决</p>
<p>用公式怎样解决呢?</p>
页:
[1]
2