• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 9, comments - 6, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            ????????? 已知兩個(gè)數(shù)字為1~30的,甲知道兩數(shù)只和,乙知道兩數(shù)之積,甲問乙:“你知道是那兩個(gè)數(shù)嗎?”乙說:“不知道”。乙問甲:“你知道是那兩個(gè)數(shù)嗎?”甲說:“也不知道”。于是,乙說 :“那我知道了”隨后甲也說:“那我也知道了”這兩個(gè)數(shù)是'什么?

            以下用VB。NET實(shí)現(xiàn):

            ??? Dim NUM, SUM, PRODUCT As Int32
            ??? Dim Product1()() As Int32
            ??? Dim i, m, n, Sum1(3)() As Int32

            ??? Private Sub MyMain()
            ??????? Product1 = Nothing
            ??????? NUM = CInt(Me.TextBox1.Text)
            ??????? GetSum1()
            ??????? GetProduct1()
            ??????? For m = 1 To NUM
            ??????????? For n = m To NUM
            ??????????????? If SumOnly(m, n) Or ProductOnly(m, n) Then GoTo NextItem '不好意思用了個(gè)GOTO
            ??????????????? SUM = m + n
            ??????????????? PRODUCT = m * n
            ??????????????? '甲的和產(chǎn)生的積中最多有(n -2)個(gè)是唯一積
            ??????????????? If SUMtoPRODUCT_N_2(SUM) < 2 Then GoTo NextItem
            ??????????????? '乙的積產(chǎn)生的和中有且只有一個(gè)滿足1、不是唯一和 2、和產(chǎn)生的積中最多有(n -2)個(gè)是唯一積
            ??????????????? '并且其余的和均滿足 1、不是唯一和 2、有n-1個(gè)唯一積
            ??????????????? If PROCUCTtoSUM(PRODUCT) Then
            ??????????????????? MsgBox(m.ToString() & "? " & n.ToString())
            ??????????????? End If
            NextItem:?? Next

            ??????? Next

            ??? End Sub
            ??? Private Sub GetSum1()
            ??????? '產(chǎn)生唯一和并保存在數(shù)組中
            ??????? ReDim Sum1(0)(1)
            ??????? Sum1(0)(0) = 1
            ??????? Sum1(0)(1) = 1
            ??????? ReDim Sum1(1)(1)
            ??????? Sum1(1)(0) = 1
            ??????? Sum1(1)(1) = 2
            ??????? ReDim Sum1(2)(1)
            ??????? Sum1(2)(0) = NUM - 1
            ??????? Sum1(2)(1) = NUM
            ??????? ReDim Sum1(3)(1)
            ??????? Sum1(3)(0) = NUM
            ??????? Sum1(3)(1) = NUM
            ??? End Sub
            ??? Private Function SumOnly(ByVal N1 As Int32, ByVal N2 As Int32) As Boolean
            ??????? '判斷是否為唯一和
            ??????? Dim i As Int32
            ??????? For i = 0 To 3
            ??????????? If N1 = Sum1(i)(0) AndAlso N2 = Sum1(i)(1) Then Return True
            ??????? Next
            ??????? Return False
            ??? End Function
            ??? Private Sub GetProduct1()
            ??????? '產(chǎn)生唯一積并保存在數(shù)組中
            ??????? Dim tmp(NUM * NUM)() As Int32
            ??????? For m = 1 To NUM '????????????????
            ??????????? For n = m To NUM? '??????????????
            ??????????????? Dim meme() As Int32 = tmp(m * n)
            ??????????????? If meme Is Nothing Then
            ??????????????????? ReDim meme(2)
            ??????????????? Else
            ??????????????????? ReDim Preserve meme(meme.Length + 1)
            ??????????????? End If

            ??????????????? meme(meme.Length - 1) = m
            ??????????????? meme(meme.Length - 2) = n
            ??????????????? meme(0) += 1
            ??????????????? tmp(m * n) = meme
            ??????????????? meme = Nothing
            ??????????? Next
            ??????? Next
            ??????? For i = 1 To NUM * NUM
            ??????????? If Not tmp(i) Is Nothing AndAlso tmp(i)(0) = 1 Then
            ??????????????? For m = 1 To tmp(i).GetUpperBound(0) Step 2
            ??????????????????? If Product1 Is Nothing Then
            ??????????????????????? ReDim Product1(0)
            ??????????????????????? ReDim Product1(0)(1)
            ??????????????????? Else
            ??????????????????????? ReDim Preserve Product1(Product1.Length)
            ??????????????????????? ReDim Product1(Product1.Length - 1)(1)
            ??????????????????? End If
            ??????????????????? Product1(Product1.Length - 1)(0) = tmp(i)(m)
            ??????????????????? Product1(Product1.Length - 1)(1) = tmp(i)(m + 1)
            ??????????????? Next
            ??????????? End If
            ??????? Next
            ??? End Sub
            ??? Private Function ProductOnly(ByVal N1 As Int32, ByVal N2 As Int32) As Boolean
            ??????? '判斷是否為唯一積
            ??????? Dim i As Int32
            ??????? For i = 0 To Product1.GetUpperBound(0)
            ??????????? If N1 = Product1(i)(1) AndAlso N2 = Product1(i)(0) Then Return True
            ??????????? If N1 = Product1(i)(0) AndAlso N2 = Product1(i)(1) Then Return True
            ??????? Next
            ??????? Return False
            ??? End Function
            ??? Private Function SUMtoPRODUCT_N_2(ByVal SUM As Int32) As Int32
            ??????? '甲的和產(chǎn)生的積中最多有(n -2)個(gè)是唯一積
            ??????? Dim n As Int32 = CInt(SUM / 2 - 0.2)
            ??????? Dim i, m As Int32
            ??????? For i = 1 To n
            ??????????? If ProductOnly(i, SUM - i) Then m += 1
            ??????? Next
            ??????? Return n - m
            ??? End Function
            ??? Private Function PROCUCTtoSUM(ByVal PRODUCT As Int32) As Boolean
            ??????? '乙的積產(chǎn)生的和中有且只有一個(gè)滿足1、不是唯一和 2、和產(chǎn)生的積中最多有(n -2)個(gè)是唯一積
            ??????? '并且其余的和均滿足 1、不是唯一和 2、有n-1個(gè)唯一積
            ??????? Dim tmp()(), i, m, n As Int32
            ??????? '1、分解積看能產(chǎn)生多少個(gè)和
            ??????? For i = 1 To CInt(Math.Sqrt(PRODUCT) - 0.4)
            ??????????? If PRODUCT Mod i = 0 Then
            ??????????????? If tmp Is Nothing Then
            ??????????????????? ReDim tmp(0)
            ??????????????????? ReDim tmp(0)(2)
            ??????????????? Else
            ??????????????????? ReDim Preserve tmp(tmp.Length)
            ??????????????????? ReDim Preserve tmp(tmp.Length - 1)(2)
            ??????????????? End If
            ??????????????? tmp(tmp.Length - 1)(2) = PRODUCT / i
            ??????????????? tmp(tmp.Length - 1)(1) = i
            ??????????????? If Not SumOnly(tmp(tmp.Length - 1)(1), tmp(tmp.Length - 1)(2)) And SUMtoPRODUCT_N_2(i + PRODUCT / i) >= 2 Then
            ??????????????????? '和不為唯一和,且和產(chǎn)生的積中支多有n-2個(gè)是唯一積
            ??????????????????? tmp(tmp.Length - 1)(0) = 1
            ??????????????? End If
            ??????????????? If SumOnly(tmp(tmp.Length - 1)(1), tmp(tmp.Length - 1)(2)) Then
            ??????????????????? '唯一和
            ??????????????????? tmp(tmp.Length - 1)(0) = 3
            ??????????????? End If
            ??????????????? If Not SumOnly(tmp(tmp.Length - 1)(1), tmp(tmp.Length - 1)(2)) And SUMtoPRODUCT_N_2(i + PRODUCT / i) = 1 Then
            ??????????????????? '不是唯一和,但是有n-1個(gè)唯一積
            ??????????????????? tmp(tmp.Length - 1)(0) = 2
            ??????????????? End If
            ??????????? End If
            ??????? Next
            ??????? Dim count As Int32 = 0
            ??????? For i = 0 To tmp.Length - 1
            ??????????? If tmp(i)(0) = 0 Then Return False
            ??????????? If tmp(i)(0) = 1 Then count += 1
            ??????? Next
            ??????? If count <> 1 Then Return False
            ??????? Return True
            ??? End Function



          1. 漢諾塔問題的非遞歸非堆棧算法(二)(原作)
          2. 漢諾塔問題的非遞歸非堆棧算法(一)(原作)
          3. 作者相關(guān)文章:

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            性做久久久久久久| 久久综合五月丁香久久激情| 中文成人久久久久影院免费观看| 久久久亚洲欧洲日产国码aⅴ | 久久性生大片免费观看性| 久久综合久久伊人| 久久婷婷成人综合色综合| 伊人色综合久久天天人守人婷| 亚洲狠狠婷婷综合久久蜜芽| 国产福利电影一区二区三区久久久久成人精品综合 | 久久人人爽人人爽人人AV | 久久精品无码一区二区app| 国产精品久久久久a影院| 996久久国产精品线观看| 无码AV波多野结衣久久| 一级a性色生活片久久无| 狠狠88综合久久久久综合网| 蜜臀久久99精品久久久久久小说 | 久久久久久久久久久久久久| 欧美久久久久久午夜精品| 精品免费久久久久久久| 久久强奷乱码老熟女| 国产欧美久久一区二区| 99久久精品国产高清一区二区| 久久精品夜色噜噜亚洲A∨| 久久精品国产亚洲AV香蕉| 久久综合亚洲色HEZYO社区| 久久强奷乱码老熟女网站| 91亚洲国产成人久久精品网址 | 久久亚洲精品人成综合网| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 99精品国产综合久久久久五月天| 欧美精品乱码99久久蜜桃| 日本高清无卡码一区二区久久| 国产精品gz久久久| 精品久久久无码中文字幕| 久久天天躁夜夜躁狠狠| 亚洲va久久久久| 国产精品99久久免费观看| 日韩精品久久久肉伦网站| 99久久99久久精品免费看蜜桃|