整數的分割方式
對於一個正整數n而言,它是一個分割(Partition),就是把n寫成若干個正整數的和,但不計較書寫的順序,請寫一個程式,輸入n,把n的所有的分割顯示出來。
說明:
如果n=7那麼我們有如下的分割:
7
6 1
5 2
5 1 1
4 3
4 2 1
4 1 1 1
3 3 1
3 2 2
3 2 1 1
3 1 1 1 1
2 2 2 1
2 2 1 1 1
2 1 1 1 1 1
1 1 1 1 1 1 1
輸入格式:
input N=6
輸出格式:
6
5 1
4 2
4 1 1
3 3
3 2 1
3 1 1 1
2 2 2
2 2 1 1
2 1 1 1 1
1 1 1 1 1 1
這題有些難度 不知道有哪位大大可以幫幫忙...
我只寫到一半後面就不順了
2006-10-18 04:19:32 · 5 個解答 · 發問者 小均 2 in 電腦與網際網路 ➔ 程式設計
這是我寫一半的程式 希望可以給大大一點幫助
或是修改...
http://quietmes.myweb.hinet.net/int.txt
2006-10-18 04:24:44 · update #1
Private Sub Command1_Click() Dim I As Integer, J As Integer, A As Integer, N As Integer Do N = Abs(Int(Val(InputBox("請輸入正整數", , 7)))) Loop Until N >= 0 Cls ReDim X(0) As String: X(0) = N Do '利用Join函數將X陣列轉成字串輸出 Print Join(X, "") J = UBound(X) '找出陣列中最後一個大於1的索引值 For I = UBound(X) To 0 Step -1 If Val(X(I)) > 1 Then A = X(I): Exit For Next '找不到就表示全部都是1,收工! If I < 0 Then Exit Sub '重新宣告陣列大小(把等於1的陣列刪除) ReDim Preserve X(I) '最後一個大於1的陣列值減1 X(I) = A - 1 '計算整個陣列總和還差N多少 A = J - I + 1: J = I + 1 '新增一個陣列,把差值放入 ReDim Preserve X(J): X(J) = A '若此陣列的值大於前個陣列的值,就將此陣列值改成跟前個陣列的值相同,再新增一個陣列放入減去前個陣列後的值,直到此陣列的值<=前個陣列的值 Do While A > Val(X(J - 1)) X(J) = X(J - 1): A = A - X(J): J = J + 1 ReDim Preserve X(J): X(J) = A Loop '讓程式停下來看看有無別的事要做(因為若N太大要跑很久,加Doevents才不會當掉) DoEvents LoopEnd Sub
2006-10-19 18:09:49 補充:
Liu-Liu兄,你潛水太久該浮上來換換氣了^^
2006-10-18 14:09:31 · answer #1 · answered by W.J.S. 7 · 0⤊ 0⤋
Dim AnswerTemp() As Integer
'AnswerTemp(0)是用來記錄目前答案使用的陣列空間大小
Sub Answer(a As Integer, b As Integer)
'a是剩餘的和,b是限制後面的數不可以比前面的大
Dim i As Integer
If a = 1 Then
For i = 1 To AnswerTemp(0)
temp = temp & Str(AnswerTemp(i))
Next
Form1.Print temp & Str(1)
Else
AnswerTemp(0) = AnswerTemp(0) + 1
For i = a To 1 Step -1
AnswerTemp(AnswerTemp(0)) = i
If b >= i Then
Answer a - i, i
End If
Next
AnswerTemp(0) = AnswerTemp(0) - 1
End If
End Sub
Private Sub Form_Click()
Dim a As Integer
a = InputBox("請輸入數值")
ReDim AnswerTemp(a)
Form1.Print a
Answer a, a
End Sub
2006-10-21 21:50:39 · answer #2 · answered by 五百六 3 · 0⤊ 0⤋
呼~~各位大大你們年紀都多少阿??
學了幾年阿??幾時才能像你們這樣??
2006-10-19 15:15:54 · answer #3 · answered by 小均 2 · 0⤊ 0⤋
這題我解不出來,想不到被 WJS 大解決了,實在有夠強。
2006-10-19 13:03:04 · answer #4 · answered by 世賢 7 · 0⤊ 0⤋
能不能打上註解呢?
2006-10-18 21:35:57 補充:
喔....不用了,已經看懂了 = =
2006-10-18 17:27:07 · answer #5 · answered by jj0900 1 · 0⤊ 0⤋