主题:[讨论]关于螺旋样的图形
晕!今天有个朋友QQ上问我这样的图形! 晕!我对数据结构和算法都不通的!
糊乱搞了一下!写是写出来了!但是确只能打印等长的图形! [em54]
他是这样问的:
--------------------------
编一个螺旋样的图形
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
---------------------------
晕倒呀!可怜的我没有想到过!!!!!
我用VB代码写了一个! 感觉好乱! 请各位老鸟看下是否有更好的解决方案!
--------------------------------
Option Base 1
Dim Img(5, 5) As Integer ' 存款图形数据
Dim Row As Integer ' 图形高
Dim Col As Integer ' 图形长
Dim Jsq As Integer
Dim CS As Integer '
Dim I_Row As Integer '
Dim I_Col As Integer
Dim sRIndex As Integer
Dim dRIndex As Integer
Dim sCIndex As Integer
Dim dCIndex As Integer
Dim tempStr As String
Row = 5
Col = 5
sRIndex = 1
sCIndex = 1
dRIndex = Row
dCIndex = Col
Do While CS <= Int(Row / 2) + (Row Mod 2)
CS = CS + 1
I_Row = sRIndex
Do While I_Row <= dRIndex - 1
Jsq = Jsq + 1
Img(I_Row, sCIndex) = Jsq
I_Row = I_Row + 1
Loop
I_Col = sCIndex
Do While I_Col <= dCIndex - 1
Jsq = Jsq + 1
Img(dCIndex, I_Col) = Jsq
I_Col = I_Col + 1
Loop
I_Row = dRIndex
Do While I_Row >= sRIndex + 1
Jsq = Jsq + 1
Img(I_Row, dCIndex) = Jsq
I_Row = I_Row - 1
Loop
I_Col = dCIndex
Do While I_Col >= sCIndex + 1
Jsq = Jsq + 1
Img(sRIndex, I_Col) = Jsq
I_Col = I_Col - 1
Loop
If sRIndex = Int(Row / 2) + (Row Mod 2) And (Row Mod 2) = 1 Then
Jsq = Jsq + 1
Img(sRIndex, sRIndex) = Jsq
End If
sRIndex = sRIndex + 1
sCIndex = sCIndex + 1
dRIndex = dRIndex - 1
dCIndex = dCIndex - 1
Loop
tempStr = ""
For I_Col = 1 To Col Step 1
For I_Row = 1 To Row Step 1
tempStr = tempStr & CStr(Img(I_Col, I_Row)) & String(Len(Str(CInt(Col * Row))) - Len(CStr(Img(I_Col, I_Row))), Chr(32))
Next
tempStr = tempStr & Chr(13) & Chr(10)
Next
MsgBox tempStr
-----------------------------------------------
请把你知道的算法写下来!
糊乱搞了一下!写是写出来了!但是确只能打印等长的图形! [em54]
他是这样问的:
--------------------------
编一个螺旋样的图形
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
---------------------------
晕倒呀!可怜的我没有想到过!!!!!
我用VB代码写了一个! 感觉好乱! 请各位老鸟看下是否有更好的解决方案!
--------------------------------
Option Base 1
Dim Img(5, 5) As Integer ' 存款图形数据
Dim Row As Integer ' 图形高
Dim Col As Integer ' 图形长
Dim Jsq As Integer
Dim CS As Integer '
Dim I_Row As Integer '
Dim I_Col As Integer
Dim sRIndex As Integer
Dim dRIndex As Integer
Dim sCIndex As Integer
Dim dCIndex As Integer
Dim tempStr As String
Row = 5
Col = 5
sRIndex = 1
sCIndex = 1
dRIndex = Row
dCIndex = Col
Do While CS <= Int(Row / 2) + (Row Mod 2)
CS = CS + 1
I_Row = sRIndex
Do While I_Row <= dRIndex - 1
Jsq = Jsq + 1
Img(I_Row, sCIndex) = Jsq
I_Row = I_Row + 1
Loop
I_Col = sCIndex
Do While I_Col <= dCIndex - 1
Jsq = Jsq + 1
Img(dCIndex, I_Col) = Jsq
I_Col = I_Col + 1
Loop
I_Row = dRIndex
Do While I_Row >= sRIndex + 1
Jsq = Jsq + 1
Img(I_Row, dCIndex) = Jsq
I_Row = I_Row - 1
Loop
I_Col = dCIndex
Do While I_Col >= sCIndex + 1
Jsq = Jsq + 1
Img(sRIndex, I_Col) = Jsq
I_Col = I_Col - 1
Loop
If sRIndex = Int(Row / 2) + (Row Mod 2) And (Row Mod 2) = 1 Then
Jsq = Jsq + 1
Img(sRIndex, sRIndex) = Jsq
End If
sRIndex = sRIndex + 1
sCIndex = sCIndex + 1
dRIndex = dRIndex - 1
dCIndex = dCIndex - 1
Loop
tempStr = ""
For I_Col = 1 To Col Step 1
For I_Row = 1 To Row Step 1
tempStr = tempStr & CStr(Img(I_Col, I_Row)) & String(Len(Str(CInt(Col * Row))) - Len(CStr(Img(I_Col, I_Row))), Chr(32))
Next
tempStr = tempStr & Chr(13) & Chr(10)
Next
MsgBox tempStr
-----------------------------------------------
请把你知道的算法写下来!