• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Các đề tài, cuộc thi, chủ đề chung của diễn đàn

Điều hành viên: Điều hành

NovaFooc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 307
Ngày tham gia: T.Ba 11/08/2009 3:27 pm

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi NovaFooc » T.Sáu 19/11/2010 11:12 am

hình như đề k0 khó như đã... quảng cáo nhỉ ;))
mần một buổi sáng xong từ A đến Z lun :D
nộp bài lun oy, các bác nhanh lên để mod Đạt "kết sổ" nào



Hình đại diện của người dùng
T7
Thành viên danh dự
Thành viên danh dự
Bài viết: 415
Ngày tham gia: T.Năm 24/05/2007 8:19 pm
Đến từ: Long Xuyên - An Giang
Been thanked: 12 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi T7 » T.Sáu 19/11/2010 12:51 pm

vo_minhdat2007 đã viết:Hì, cuối cùng cũng giải được test 5000 số Random rồi, chỉ khoảng 250ms thôi :D Chỉ tiếc là thử test 8000 và 10000 số thì lại bị StackOverflow nên không thử được sức chịu đựng thời gian của chương trình với số lớn :D

Nhân tiện tặng các bạn đoạn code để kiểm tra xem kết quả đúng không luôn (copy kết quả ra Notepad rồi save thành file) :P

  1.     Private Sub butTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butTest.Click
  2.         Dim diagOpen As New OpenFileDialog
  3.         With diagOpen
  4.             .Title = "Chọn tập tin cần mở..."
  5.             .Filter = "*.txt|*.txt"
  6.             If .ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
  7.             Dim i As Integer = InputBox("Nhập số lượng số (nếu muốn):", , "0")
  8.             If Check(IO.File.ReadAllText(.FileName), i) Then
  9.                 MsgBox("OK!!!", MsgBoxStyle.Information)
  10.             Else
  11.                 MsgBox("Failed <!-- s:( --><img src="{SMILIES_PATH}/002.gif" alt=":(" title="Buồn" /><!-- s:( -->", MsgBoxStyle.Critical)
  12.             End If
  13.         End With
  14.     End Sub
  15.  
  16.     Private Function Check(ByVal Text As String, Optional ByVal N As Integer = 0) As Boolean
  17.         Dim Temp As String() = Text.Split(" ")
  18.         Dim Arr(Temp.Length - 1) As Integer
  19.         If N > 0 AndAlso Temp.Length <> N Then Return False
  20.         Arr(0) = Val(Temp(1))
  21.         For i As Integer = 1 To Temp.Length - 1
  22.             Arr(i) = Val(Temp(i))
  23.             If (Arr(i) + Arr(i - 1)) Mod 3 = 0 Then Return False
  24.         Next
  25.         Return True
  26.     End Function


Bận tu luyện nên lâu quá ko lên 4r, mấy hôm nay gần đến 20/11 rồi nên thầy cô cũng hạ sức ép học tập xuống bởi thế mới có thời gian lên 4r :D . Lại ngay dịp gặp cái bài này nên thử mần luôn :P .
Bài toán này thực ra chỉ cần 1 thuật toán O(n) là làm được rồi, em cài test 10000 chạy cái vèo :)) lâu là chỉ ở cái cách xuất kết quả ra thôi ;)) , còn phương pháp "Bốc - thử - sai thì bỏ" thì ko khả thi cho lắm ;)
Code ở Function check ở trên anh Đạt sửa lại: "Dim Arr(Temp.Length - 1) As Integer" thành Long nhé. Các số có giá trị từ 0 -> 2^31 - 1 mà :)
While (i <= you) i++;

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 19/11/2010 5:30 pm

Uhm, 2 số đó đâu có kế bên :D

@T7: Integer là đúng mà? Integer = 4 bytes = 32 bit => Max ~ 2^31?

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi vo_minhdat2007 » CN 21/11/2010 7:40 pm

Đã nhận bài của T7 và NovaFooc. Thứ ba thi xong mình sẽ xem :D

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi alexanderdna » T.Hai 22/11/2010 11:12 am

Phào! Cuối cùng cũng có thời gian làm bài dự thi. :D
Có điều làm ẩu quá, không biết có bọ lỗi nào trong đó hay không! :-S

Vụ Integer với Long cũng vui vui. Xin được bàn "ké" như vầy:
Trong VB.NET thì Integer là System.Int32, Long là System.Int64.
Về lý thuyết Integer đủ sức chứa +2^31 - 1, và đó cũng là trị cực đại của nó. Trị cực tiểu là -2^31.
Vậy nên bạn Đạt cho Integer là hợp, nhưng chỉ là về lý thuyết.
Còn trên thực tế, khi kiểm tra tổng hai số có chia hết cho 3 hay không thì rất có thể là tổng này lớn hơn phạm vi 32bit. Do đó cần phải đổi qua Long để chứa cho đủ. Lúc này T7 có lý.

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 26/11/2010 7:25 pm

Bài của bạn T7:

Code:

  1. Public Class frmMain
  2.     Const MaxN = 100000
  3.     Const MaxC = 50
  4.     Dim d1(0 To MaxN), d2(0 To MaxN), d3(0 To MaxN) As String
  5.     Dim Fib(0 To MaxC) As Long, d As Long
  6.     Dim N, c1, c2, c3 As Integer
  7.     Dim St As String
  8.     Function IsPalindrom(ByVal s As String) As Boolean
  9.         Dim i As Byte
  10.         For i = 1 To s.Length \ 2
  11.             If s.Substring(i - 1, 1) <> s.Substring(s.Length - i, 1) Then Return False
  12.         Next
  13.         Return True
  14.     End Function
  15.  
  16.     Function IsFibonanci(ByVal n As Long) As Byte
  17.         Dim i As Byte
  18.         For i = 1 To d
  19.             If Fib(i) = n Then Return i
  20.         Next
  21.         Return 0
  22.     End Function
  23.  
  24.     Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  25.         Dim i1, i2, t As Long
  26.         d = 2 : i1 = 1 : i2 = 1
  27.         Fib(1) = 1 : Fib(2) = 1
  28.         Do While i1 + i2 < 2 ^ 31
  29.             d += 1
  30.             Fib(d) = i1 + i2
  31.             t = i1 : i1 = i2 : i2 += t
  32.         Loop
  33.     End Sub
  34.  
  35.     Private Sub butChoose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butChoose.Click
  36.         If OpenDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
  37.             Dim f As IO.StreamReader
  38.             Dim ArrS() As String, i As Integer, vt As Byte
  39.             f = IO.File.OpenText(OpenDialog.FileName)
  40.             N = f.ReadLine() : ArrS = Split(f.ReadLine(), " ") : f.Close()
  41.             lstFibonanci.Items.Clear() : lstPalindrome.Items.Clear()
  42.             c1 = 0 : c2 = 0 : c3 = 0
  43.             For i = 0 To N - 1
  44.                 If IsPalindrom(Trim(ArrS(i))) Then lstPalindrome.Items.Add(Trim(ArrS(i)))
  45.                 vt = IsFibonanci(Int(ArrS(i)))
  46.                 If vt <> 0 Then lstFibonanci.Items.Add(Trim(ArrS(i)) & " (" & vt & ")")
  47.                 Select Case Int(ArrS(i)) Mod 3
  48.                     Case 1 : c1 += 1 : d1(c1) = Trim(ArrS(i))
  49.                     Case 2 : c2 += 1 : d2(c2) = Trim(ArrS(i))
  50.                     Case 0 : c3 += 1 : d3(c3) = Trim(ArrS(i))
  51.                 End Select
  52.             Next
  53.             butCalc.Enabled = True
  54.         End If
  55.     End Sub
  56.  
  57.     Function Sort() As Boolean
  58.         If (c3 = 0 And c1 * c2 <> 0) Or (c3 > c1 + c2 + 1) Then Return False
  59.         Dim i As Integer, j As Integer
  60.         Dim s As New System.Text.StringBuilder
  61.         For i = 1 To c1
  62.             s.Append("1")
  63.         Next
  64.         s.Append("3")
  65.         For i = 1 To c2
  66.             s.Append("2")
  67.         Next
  68.         j = 0
  69.         For i = 1 To c3 - 1
  70.             If j = c1 * 2 Then j += 2
  71.             s.Insert(j, "3", 1)
  72.             j += 2
  73.         Next
  74.         St = s.ToString
  75.         Return True
  76.     End Function
  77.  
  78.     Private Sub butCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butCalc.Click
  79.         Dim t1, t2, t3 As Integer
  80.         t1 = c1 : t2 = c2 : t3 = c3
  81.         If Sort() Then
  82.             Dim i As Integer
  83.             Dim s As New System.Text.StringBuilder
  84.             For i = 1 To N
  85.                 Select Case St.Substring(i - 1, 1)
  86.                     Case "1"
  87.                         s.Append(d1(t1) & " ")
  88.                         t1 -= 1
  89.                     Case "2"
  90.                         s.Append(d2(t2) & " ")
  91.                         t2 -= 1
  92.                     Case "3"
  93.                         s.Append(d3(t3) & " ")
  94.                         t3 -= 1
  95.                 End Select
  96.             Next
  97.             s.Remove(s.Length - 1, 1)
  98.             txtOutput.Text = s.ToString
  99.         Else
  100.             txtOutput.Text = "Không thể sắp xếp được !"
  101.         End If
  102.     End Sub
  103. End Class
  104.  


Test: 5/5

Điểm: 10/10

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 26/11/2010 7:25 pm

Bài của bạn alexanderdna:

Code:

  1. ' Bài dự thi Kỹ năng Lập trình - Kỳ 6: Các cặp số
  2. '
  3. ' Người dự thi  : alexanderdna
  4. ' Ngày nộp      : Thứ Hai 22-11-2010
  5.  
  6. Public Class frmMain
  7.     ''' <summary>
  8.     ''' Số lượng các cần sắp xếp.
  9.     ''' </summary>
  10.     Private iCount As Integer
  11.     ''' <summary>
  12.     ''' Dãy số cần sắp xếp.
  13.     ''' </summary>
  14.     Private aiNumbers As Long()
  15.     ''' <summary>
  16.     ''' Dãy Fibonacci trong phạm vi 32-bit.
  17.     ''' </summary>
  18.     ''' <remarks></remarks>
  19.     Private fibseq As Integer()
  20.  
  21.     Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  22.         Me.InitFibSeq()
  23.     End Sub
  24.  
  25.     Private Sub butChoose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butChoose.Click
  26.         Me.LoadData()
  27.         Me.ShowPalindrome()
  28.         Me.ShowFibonacci()
  29.     End Sub
  30.  
  31.     Private Sub butCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butCalc.Click
  32.         If Me.Arrange() Then
  33.             Dim results As String() = Array.ConvertAll(Me.aiNumbers, Function(i As Integer) i.ToString())
  34.             Me.txtOutput.Text = String.Join(" ", results)
  35.         Else
  36.             Me.txtOutput.Text = "Không thể sắp xếp dãy số."
  37.         End If
  38.     End Sub
  39.  
  40.     ''' <summary>
  41.     ''' Lọc và hiện các số Palindrom
  42.     ''' </summary>
  43.     Private Sub ShowPalindrome()
  44.         Me.lstPalindrome.Items.Clear()
  45.         For i As Integer = 0 To iCount - 1
  46.             If Me.CheckPalindrome(aiNumbers(i)) Then
  47.                 Me.lstPalindrome.Items.Add(aiNumbers(i))
  48.             End If
  49.         Next
  50.     End Sub
  51.  
  52.     ''' <summary>
  53.     ''' Lọc và hiện các số Fibonacci
  54.     ''' </summary>
  55.     Private Sub ShowFibonacci()
  56.         Me.lstFibonanci.Items.Clear()
  57.         Dim pos As Integer = 0
  58.         For i As Integer = 0 To iCount - 1
  59.             If Me.CheckFibonacci(Me.aiNumbers(i), pos) Then
  60.                 Me.lstFibonanci.Items.Add(String.Concat(Me.aiNumbers(i).ToString(), " (", pos.ToString(), ")"))
  61.             End If
  62.         Next
  63.     End Sub
  64.  
  65.     ''' <summary>
  66.     ''' Sắp xếp dãy số theo yêu cầu.
  67.     ''' </summary>
  68.     ''' <returns>True nếu sắp xếp được, không thì False.</returns>
  69.     Private Function Arrange() As Boolean
  70.         If aiNumbers.Length = 1 Then
  71.             Return True
  72.         ElseIf aiNumbers.Length = 2 Then
  73.             If (aiNumbers(0) + aiNumbers(1)) Mod 3 = 0 Then Return False Else Return True
  74.         End If
  75.  
  76.         Dim prev As Integer = 0
  77.         Dim i As Integer = 1
  78.         Dim j As Integer = 0
  79.         Dim tmp As Integer = 0
  80.         While i < Me.iCount
  81.             prev = aiNumbers(i - 1)
  82.             j = i
  83.             While (j < iCount AndAlso (prev + aiNumbers(j)) Mod 3 = 0)
  84.                 j += 1
  85.             End While
  86.  
  87.             If j = iCount Then
  88.                 tmp = aiNumbers(i)
  89.                 aiNumbers(i) = prev
  90.                 aiNumbers(i - 1) = tmp
  91.             Else
  92.                 tmp = aiNumbers(i)
  93.                 aiNumbers(i) = aiNumbers(j)
  94.                 aiNumbers(j) = tmp
  95.             End If
  96.  
  97.             i += 1
  98.         End While
  99.  
  100.         If Me.CheckCorrectness() Then
  101.             Return True
  102.         Else
  103.             Return False
  104.         End If
  105.     End Function
  106.  
  107.     ''' <summary>
  108.     ''' Kiểm tra xem số được cho có phải số Palindrome hay không.
  109.     ''' </summary>
  110.     ''' <param name="n">Số cần kiểm tra.</param>
  111.     ''' <returns>True nếu là Palindrom, không thì False.</returns>
  112.     Private Function CheckPalindrome(ByVal n As Integer) As Boolean
  113.         If n < 10 Then Return True
  114.  
  115.         Dim oldn As Integer = n
  116.         Dim digit As Integer = 0, newn As Long = 0
  117.         While n > 0
  118.             digit = n Mod 10
  119.             newn = newn * 10 + digit
  120.             n \= 10
  121.         End While
  122.         If oldn = newn Then
  123.             Return True
  124.         Else
  125.             Return False
  126.         End If
  127.     End Function
  128.  
  129.     ''' <summary>
  130.     ''' Kiểm tra xem số được cho có phải số Fibonacci hay không
  131.     ''' và cho biết vị trí của nó trong dãy Fibonacci.
  132.     ''' </summary>
  133.     ''' <param name="n">Số cần kiểm tra.</param>
  134.     ''' <param name="position">(xuất) Vị trí trong dãy Fibonacci, nếu có.</param>
  135.     ''' <returns>True nếu là số Fibonacci, không thì False.</returns>
  136.     Private Function CheckFibonacci(ByVal n As Integer, ByRef position As Integer) As Boolean
  137.         Dim maxIndex As Integer = Me.fibseq.Length - 1
  138.         For i As Integer = 0 To maxIndex
  139.             If n = Me.fibseq(i) Then
  140.                 position = i
  141.                 Return True
  142.             End If
  143.         Next
  144.         position = -1
  145.         Return False
  146.     End Function
  147.  
  148.     ''' <summary>
  149.     ''' Nạp dữ kiện từ tập tin.
  150.     ''' </summary>
  151.     Private Sub LoadData()
  152.         If Me.dlgOpen.ShowDialog() = Windows.Forms.DialogResult.OK Then
  153.  
  154.             Dim fileName As String = dlgOpen.FileName
  155.  
  156.             ' Mảng các số dưới dạng String
  157.             Dim figures As String()
  158.  
  159.             ' Đọc tập tin
  160.             Using reader As New IO.StreamReader(fileName)
  161.                 ' Lấy số lượng giá trị ở dòng thứ nhất
  162.                 Me.iCount = CInt(reader.ReadLine())
  163.                 ' Lấy các giá trị ở dòng thứ nhì, tách ra
  164.                 figures = reader.ReadLine().Split(" "c)
  165.  
  166.                 reader.Close()
  167.             End Using
  168.  
  169.             ' Chuyển đổi ra số Integer
  170.             Me.aiNumbers = Array.ConvertAll(figures, Function(s) CLng(s))
  171.  
  172.         End If
  173.  
  174.         Me.dlgOpen.Dispose()
  175.     End Sub
  176.  
  177.     ''' <summary>
  178.     ''' Khởi lập dãy Fibonacci.
  179.     ''' </summary>
  180.     Private Sub InitFibSeq()
  181.         Dim lstFib As New List(Of Integer)
  182.         Dim a As Long = 0, b As Long = 1, f As Long = 0
  183.  
  184.         lstFib.Add(a)
  185.         lstFib.Add(b)
  186.  
  187.         While a + b < Integer.MaxValue
  188.             f = a + b
  189.             a = b
  190.             b = f
  191.             lstFib.Add(CInt(f))
  192.         End While
  193.  
  194.         Me.fibseq = lstFib.ToArray()
  195.     End Sub
  196.  
  197.     ''' <summary>
  198.     ''' Kiểm tra tính chuẩn xác của quá trình sắp xếp.
  199.     ''' </summary>
  200.     ''' <returns>True nếu chuẩn xác, không thì False.</returns>
  201.     Private Function CheckCorrectness() As Boolean
  202.         For i = 1 To aiNumbers.Length - 1
  203.             If (aiNumbers(i - 1) + aiNumbers(i)) Mod 3 = 0 Then Return False
  204.         Next
  205.         Return True
  206.     End Function
  207. End Class
  208.  
  209.  


Test: 5/5

Điểm: 10/10

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 26/11/2010 7:25 pm

Bài của bạn NovaFooc:

Code:

  1. Public Class CapSo
  2.     Private aDu(2) As Queue(Of UInteger)
  3.  
  4.     Private _DauVao As UInteger()
  5.     Public ReadOnly Property DauVao As UInteger()
  6.         Get
  7.             Return _DauVao
  8.         End Get
  9.     End Property
  10.     Private _DauRa As UInteger()
  11.     Public Property DauRa() As UInteger()
  12.         Get
  13.             Return _DauRa
  14.         End Get
  15.         Set(ByVal value As UInteger())
  16.             _DauRa = value
  17.         End Set
  18.     End Property
  19.  
  20.     Public Shared Function IsPalidrome(ByVal i As UInteger) As Boolean
  21.         Dim s As String = CStr(i)
  22.         Dim m As UInteger = Math.Floor(s.Length / 2)
  23.         Return Strings.Left(s, m).Equals(New String(Strings.Right(s, m).ToCharArray.Reverse.ToArray))
  24.     End Function
  25.  
  26.     Public Shared Function ListFibonanci(ByVal max As UInteger) As List(Of UInteger)
  27.         Dim r As New List(Of UInteger)
  28.         r.Add(1)
  29.  
  30.         Dim i0, i1, i2 As UInteger
  31.         i1 = 1
  32.         i2 = 1
  33.  
  34.         While i2 < max
  35.             i0 = i2
  36.             i2 = i1 + i2
  37.             i1 = i0
  38.             r.Add(i2)
  39.         End While
  40.  
  41.         Return r
  42.     End Function
  43.  
  44.     Public Function FromString(ByVal s As String) As Integer
  45.         Dim taSo() As String
  46.         Dim aSo As New List(Of UInteger)
  47.         Dim ti As UInteger
  48.  
  49.         taSo = s.Split(" ")
  50.  
  51.         aSo.Clear()
  52.  
  53.         For i = 0 To taSo.Length - 1
  54.             If UInteger.TryParse(taSo(i), ti) Then
  55.                 aSo.Add(ti)
  56.             End If
  57.         Next
  58.  
  59.         _DauVao = aSo.ToArray
  60.         Return DauVao.Length
  61.     End Function
  62.  
  63.     Public Sub Parse()
  64.         For i = 0 To 2
  65.             aDu(i) = New Queue(Of UInteger)
  66.         Next
  67.         DauRa = Nothing
  68.  
  69.         LocSo()
  70.         If KiemTra() Then
  71.             XepSo()
  72.         End If
  73.     End Sub
  74.  
  75.     Private Sub LocSo()
  76.         For i = 0 To DauVao.Length - 1
  77.             'aDu(Math.Abs(DauVao(i)) Mod 3).Enqueue(DauVao(i))
  78.             aDu(DauVao(i) Mod 3).Enqueue(DauVao(i))
  79.         Next
  80.     End Sub
  81.  
  82.     Private Function KiemTra() As Boolean
  83.         If aDu(1).Count > 0 And aDu(2).Count > 0 Then
  84.             If aDu(0).Count = 0 Then Return False
  85.         End If
  86.         If aDu(0).Count - 1 > aDu(1).Count + aDu(2).Count Then
  87.             Return False
  88.         End If
  89.  
  90.         Return True
  91.     End Function
  92.  
  93.     Private Sub XepSo()
  94.         Dim r As New Queue(Of UInteger)
  95.         Dim n0 As UInteger = aDu(0).Count
  96.         Dim bChenGiua As Boolean, iChenGiua As UInteger
  97.  
  98.         If n0 > 0 Then
  99.             iChenGiua = aDu(0).Dequeue : n0 -= 1
  100.             bChenGiua = True
  101.         End If
  102.  
  103.         For i = 0 To aDu(1).Count - 1
  104.             If n0 > 0 Then r.Enqueue(aDu(0).Dequeue) : n0 -= 1
  105.             r.Enqueue(aDu(1).Dequeue)
  106.         Next
  107.         If bChenGiua Then r.Enqueue(iChenGiua)
  108.         For i = 0 To aDu(2).Count - 1
  109.             r.Enqueue(aDu(2).Dequeue)
  110.             If n0 > 0 Then r.Enqueue(aDu(0).Dequeue) : n0 -= 1
  111.         Next
  112.  
  113.         DauRa = r.ToArray
  114.     End Sub
  115. End Class
  116.  
  117.  


Test: 5/5

Bug: Khi load tập lần thứ 2 trở đi bị lỗi.

Điểm: 9/10

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 26/11/2010 7:26 pm

Xin lỗi các bạn, do mình bận thi HSG mấy ngày qua, và 2 tuần nữa sẽ đến kì thi HK, nên thời gian khá ít, vì vậy rất tiếc kì này mình không thể xem cụ thể code từng bài (dù số lượng ít), mình chỉ dựa trên các test mà thôi. Mong các bạn thông cảm và tiếp tục ủng hộ ở các kì sau.

Vì kĩ năng khử đệ qui kém nên đáp án của mình không thể "chạy đua" với các bạn, vì vậy xin mạn phép sử dụng bài của bạn T7 và alexanderdna làm đáp án.

Hình đại diện của người dùng
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Bài viết: 1259
Ngày tham gia: T.Năm 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 time
Been thanked: 137 time
Liên hệ:

Re: [Cuộc thi] Kĩ năng lập trình - Kì 6: Các cặp số

Gửi bàigửi bởi VuVanHoanh » T.Bảy 27/11/2010 3:33 pm

Sắp ra đề kì mới rồi, chuẩn bị tinh thần tham gia


Quay về “Đề tài chung”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách