热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

再谈八皇后问题

题目:十九世纪著名的数学家高斯提出:在8×8格的国际象棋棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。分析:其实问题

题目:

十九世纪著名的数学家高斯提出:在8×8格的国际象棋棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。


分析:

其实问题可以转化为12345678的满足某种条件(行已不等,列亦不等,只需设定其不在同一斜线上,即斜率不为 1 或-1 )的排列.

通过前两天用非递归方式解决序列的全排列问题(.http://blog.csdn.net/northwolves/archive/2004/07/21/47601.aspx),在较短的时间内写出如下代码,经测试速度还可以:

代码:

'add a textbox (with multiline=true and scrollbars=2 vertical),and a commandbutton


Private Sub queens8(ByRef result() As String) '计算八皇后问题的过程
Dim i As Long, J As Integer, k As Integer '循环变量
Dim FIT As Boolean '判定是否符合条件
Dim ALL(1 To 8), out(1 To 8) As String '用于输出的数组
Dim TEMP1 As Long, TEMP2 As Integer '进制转换中间变量
For i = 1 To 40320 ' 穷举8!种排列
ALL(1) = 1
TEMP1 = i
For J = 2 To 8
TEMP2 = TEMP1 Mod J '混合进制
TEMP1 = TEMP1 / J
If TEMP2 = 0 Then
ALL(J) = J 'temp2为 0则放在最后
Else
For k = J To TEMP2 + 1 Step -1
ALL(k) = ALL(k - 1) ' temp2之后的元素后移一位
Next
ALL(TEMP2) = J 'temp2不为 0 则置于第temp2个元素前
End If
Next '至此得到12345678的一个排列

FIT = True '初始化变量

'循环判断有否两个皇后存在互吃
For J = 1 To 8
For k = 8 To 1 Step -1
If Not k = J Then
If Abs((ALL(k) - ALL(J))) = Abs(J - k) Then
FIT = False
GoTo pass '跳出循环
End If
End If
Next
Next

If FIT Then '满足条件时
Num = Num + 1 '输出编号
ReDim Preserve result(1 To Num)
For J = 1 To 8
out(J) = String(8, StrConv("□", vbWide))
Mid(out(J), ALL(J), 1) = StrConv("Q", vbWide)
Next
result(Num) = "第" & Num & "种方法:" & vbCrLf & Join(out, vbCrLf) '输出第 num 种 8个皇后摆放状态
End If
pass:
Next
End Sub

Private Sub Command1_Click()
Dim result() As String
Text1.Text = ""
queens8 result
Text1.Text = Join(result, vbCrLf & vbCrLf)
End Sub

输出:

第1种方法:
□□□□Q□□□
□□□□□□Q□
□Q□□□□□□
□□□□□Q□□
□□Q□□□□□
Q□□□□□□□
□□□Q□□□□
□□□□□□□Q

第2种方法:
□□□Q□□□□
□□□□□□Q□
□□□□Q□□□
□Q□□□□□□
□□□□□Q□□
Q□□□□□□□
□□Q□□□□□
□□□□□□□Q

第3种方法:
□□□□□Q□□
□□□Q□□□□
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□
□□□□Q□□□
□Q□□□□□□
□□□□□□□Q

第4种方法:
□□□□□Q□□
□□Q□□□□□
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q

第5种方法:
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□
□□Q□□□□□
□□□□□Q□□

第6种方法:
□□□□□□□Q
□Q□□□□□□
□□□□Q□□□
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□
□□□Q□□□□
□□□□□Q□□

第7种方法:
□□□□□□□Q
□□Q□□□□□
Q□□□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□Q□□□
□□□□□□Q□
□□□Q□□□□

第8种方法:
□□□□□□□Q
□□□Q□□□□
Q□□□□□□□
□□Q□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□□□Q□
□□□□Q□□□

第9种方法:
□□□□Q□□□
□□□□□□□Q
□□□Q□□□□
Q□□□□□□□
□□Q□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□□□Q□

第10种方法:
□□Q□□□□□
□□□□□□□Q
□□□Q□□□□
□□□□□□Q□
Q□□□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□Q□□□

第11种方法:
□□□□Q□□□
□□□□□□□Q
□□□Q□□□□
Q□□□□□□□
□□□□□□Q□
□Q□□□□□□
□□□□□Q□□
□□Q□□□□□

第12种方法:
□□□Q□□□□
□□□□□□□Q
Q□□□□□□□
□□□□Q□□□
□□□□□□Q□
□Q□□□□□□
□□□□□Q□□
□□Q□□□□□

第13种方法:
□□□Q□□□□
□□□□□□□Q
□□□□Q□□□
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□
□Q□□□□□□
□□□□□Q□□

第14种方法:
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□
□□Q□□□□□

第15种方法:
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□
Q□□□□□□□
□□Q□□□□□
□□□□Q□□□
□□□□□□Q□
□□□Q□□□□

第16种方法:
□□□Q□□□□
□□□□□□□Q
Q□□□□□□□
□□Q□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□□□Q□
□□□□Q□□□

第17种方法:
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□
Q□□□□□□□
□□Q□□□□□
□□□□Q□□□
□□□□□□Q□

第18种方法:
□□□□□□Q□
□□Q□□□□□
□□□□□□□Q
□Q□□□□□□
□□□□Q□□□
Q□□□□□□□
□□□□□Q□□
□□□Q□□□□

第19种方法:
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□
□□□□□Q□□

第20种方法:
□□□Q□□□□
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□
□□□□Q□□□

第21种方法:
Q□□□□□□□
□□□□□Q□□
□□□□□□□Q
□□Q□□□□□
□□□□□□Q□
□□□Q□□□□
□Q□□□□□□
□□□□Q□□□

第22种方法:
□□□□Q□□□
□□Q□□□□□
□□□□□□□Q
□□□Q□□□□
□□□□□□Q□
Q□□□□□□□
□□□□□Q□□
□Q□□□□□□

第23种方法:
□□□□Q□□□
Q□□□□□□□
□□□□□□□Q
□□□Q□□□□
□Q□□□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□Q□□

第24种方法:
□□□□Q□□□
□Q□□□□□□
□□□□□□□Q
Q□□□□□□□
□□□Q□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□Q□□

第25种方法:
□□Q□□□□□
□□□□Q□□□
□□□□□□□Q
□□□Q□□□□
Q□□□□□□□
□□□□□□Q□
□Q□□□□□□
□□□□□Q□□

第26种方法:
□□Q□□□□□
□□□□□Q□□
□□□□□□□Q
Q□□□□□□□
□□□□Q□□□
□□□□□□Q□
□Q□□□□□□
□□□Q□□□□

第27种方法:
□□□Q□□□□
□□□□□Q□□
□□□□□□□Q
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□
□Q□□□□□□

第28种方法:
□□Q□□□□□
□□□□□Q□□
□□□□□□□Q
Q□□□□□□□
□□□Q□□□□
□□□□□□Q□
□□□□Q□□□
□Q□□□□□□

第29种方法:
□□□□Q□□□
Q□□□□□□□
□□□□□□□Q
□□□□□Q□□
□□Q□□□□□
□□□□□□Q□
□Q□□□□□□
□□□Q□□□□

第30种方法:
Q□□□□□□□
□□□□Q□□□
□□□□□□□Q
□□□□□Q□□
□□Q□□□□□
□□□□□□Q□
□Q□□□□□□
□□□Q□□□□

第31种方法:
□Q□□□□□□
□□□□□Q□□
□□□□□□□Q
□□Q□□□□□
Q□□□□□□□
□□□Q□□□□
□□□□□□Q□
□□□□Q□□□

第32种方法:
□□Q□□□□□
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□

第33种方法:
□□□□□Q□□
□□Q□□□□□
□□□□Q□□□
□□□□□□□Q
Q□□□□□□□
□□□Q□□□□
□Q□□□□□□
□□□□□□Q□

第34种方法:
□□□□□Q□□
□□Q□□□□□
Q□□□□□□□
□□□□□□□Q
□□□□Q□□□
□Q□□□□□□
□□□Q□□□□
□□□□□□Q□

第35种方法:
□□□Q□□□□
□Q□□□□□□
□□□□Q□□□
□□□□□□□Q
□□□□□Q□□
Q□□□□□□□
□□Q□□□□□
□□□□□□Q□

第36种方法:
□□□□□□Q□
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□
Q□□□□□□□
□□Q□□□□□
□□□□Q□□□

第37种方法:
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□
□□□□□□□Q
□□□□□Q□□
□□□Q□□□□
□Q□□□□□□
□□□□Q□□□

第38种方法:
□□Q□□□□□
□□□□□□Q□
□Q□□□□□□
□□□□□□□Q
□□□□Q□□□
Q□□□□□□□
□□□Q□□□□
□□□□□Q□□

第39种方法:
□□□Q□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□□□Q
□Q□□□□□□
□□□□Q□□□
Q□□□□□□□
□□□□□Q□□

第40种方法:
□□Q□□□□□
□□□□□□Q□
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□
□□□Q□□□□
Q□□□□□□□
□□□□Q□□□

第41种方法:
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□
□□□□□Q□□
□□Q□□□□□

第42种方法:
□Q□□□□□□
□□□□□□Q□
□□□□Q□□□
□□□□□□□Q
Q□□□□□□□
□□□Q□□□□
□□□□□Q□□
□□Q□□□□□

第43种方法:
□□□Q□□□□
□□□□□□Q□
Q□□□□□□□
□□□□□□□Q
□□□□Q□□□
□Q□□□□□□
□□□□□Q□□
□□Q□□□□□

第44种方法:
□□Q□□□□□
□□□□Q□□□
□Q□□□□□□
□□□□□□□Q
Q□□□□□□□
□□□□□□Q□
□□□Q□□□□
□□□□□Q□□

第45种方法:
□□□Q□□□□
Q□□□□□□□
□□□□Q□□□
□□□□□□□Q
□Q□□□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□Q□□

第46种方法:
□□□□□Q□□
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□

第47种方法:
□□□□□Q□□
□□Q□□□□□
Q□□□□□□□
□□□□□□□Q
□□□Q□□□□
□Q□□□□□□
□□□□□□Q□
□□□□Q□□□

第48种方法:
□Q□□□□□□
□□□Q□□□□
□□□□□Q□□
□□□□□□□Q
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□

第49种方法:
□□Q□□□□□
□□□□Q□□□
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□
□□□Q□□□□
□□□□□□Q□
Q□□□□□□□

第50种方法:
□□□Q□□□□
Q□□□□□□□
□□□□Q□□□
□□□□□□□Q
□□□□□Q□□
□□Q□□□□□
□□□□□□Q□
□Q□□□□□□

第51种方法:
□□□□Q□□□
□□Q□□□□□
Q□□□□□□□
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□
□□□□□□Q□

第52种方法:
□□□□Q□□□
□Q□□□□□□
□□□Q□□□□
□□□□□Q□□
□□□□□□□Q
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□

第53种方法:
□□□□□□Q□
□□□Q□□□□
□Q□□□□□□
□□□□Q□□□
□□□□□□□Q
Q□□□□□□□
□□Q□□□□□
□□□□□Q□□

第54种方法:
□□□□□□Q□
□Q□□□□□□
□□□Q□□□□
Q□□□□□□□
□□□□□□□Q
□□□□Q□□□
□□Q□□□□□
□□□□□Q□□

第55种方法:
□□□□□□Q□
□□Q□□□□□
Q□□□□□□□
□□□□□Q□□
□□□□□□□Q
□□□□Q□□□
□Q□□□□□□
□□□Q□□□□

第56种方法:
□□□□Q□□□
□□□□□□Q□
□Q□□□□□□
□□□Q□□□□
□□□□□□□Q
Q□□□□□□□
□□Q□□□□□
□□□□□Q□□

第57种方法:
□Q□□□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□Q□□
□□□□□□□Q
□□□□Q□□□
Q□□□□□□□
□□□Q□□□□

第58种方法:
Q□□□□□□□
□□□□□□Q□
□□□Q□□□□
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□
□□□□Q□□□
□□Q□□□□□

第59种方法:
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□
□□□□□□□Q
□□□□□Q□□
□□□Q□□□□
□Q□□□□□□

第60种方法:
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□
□□□□□Q□□

第61种方法:
□□□□□Q□□
□□Q□□□□□
□□□□□□Q□
□Q□□□□□□
□□□□□□□Q
□□□□Q□□□
Q□□□□□□□
□□□Q□□□□

第62种方法:
□□□□□Q□□
□□□Q□□□□
□□□□□□Q□
Q□□□□□□□
□□□□□□□Q
□Q□□□□□□
□□□□Q□□□
□□Q□□□□□

第63种方法:
□□□□□Q□□
Q□□□□□□□
□□□□Q□□□
□Q□□□□□□
□□□□□□□Q
□□Q□□□□□
□□□□□□Q□
□□□Q□□□□

第64种方法:
□□□□□Q□□
□□□Q□□□□
Q□□□□□□□
□□□□Q□□□
□□□□□□□Q
□Q□□□□□□
□□□□□□Q□
□□Q□□□□□

第65种方法:
□□Q□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□Q□□□
□□□□□□□Q
Q□□□□□□□
□□□□□□Q□
□□□Q□□□□

第66种方法:
□□Q□□□□□
□□□□□Q□□
□□□Q□□□□
Q□□□□□□□
□□□□□□□Q
□□□□Q□□□
□□□□□□Q□
□Q□□□□□□

第67种方法:
□□Q□□□□□
□□□□□Q□□
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□

第68种方法:
□□□□Q□□□
Q□□□□□□□
□□□Q□□□□
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□
□□□□□□Q□
□□Q□□□□□

第69种方法:
□□□Q□□□□
□□□□□Q□□
Q□□□□□□□
□□□□Q□□□
□Q□□□□□□
□□□□□□□Q
□□Q□□□□□
□□□□□□Q□

第70种方法:
□□□□□□Q□
□□□□Q□□□
□□Q□□□□□
Q□□□□□□□
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□

第71种方法:
□□□□Q□□□
□□□□□□Q□
□□□Q□□□□
Q□□□□□□□
□□Q□□□□□
□□□□□□□Q
□□□□□Q□□
□Q□□□□□□

第72种方法:
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□
□□Q□□□□□

第73种方法:
□□□□□Q□□
□□Q□□□□□
□□□□□□Q□
□□□Q□□□□
Q□□□□□□□
□□□□□□□Q
□Q□□□□□□
□□□□Q□□□

第74种方法:
□□□□□Q□□
□□Q□□□□□
□□□□□□Q□
□Q□□□□□□
□□□Q□□□□
□□□□□□□Q
Q□□□□□□□
□□□□Q□□□

第75种方法:
□□□□□Q□□
□Q□□□□□□
□□□□□□Q□
Q□□□□□□□
□□□Q□□□□
□□□□□□□Q
□□□□Q□□□
□□Q□□□□□

第76种方法:
□□□Q□□□□
□Q□□□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□Q□□
□□□□□□□Q
Q□□□□□□□
□□□□Q□□□

第77种方法:
□□□Q□□□□
□Q□□□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□Q□□
□□□□□□□Q
□□□□Q□□□
Q□□□□□□□

第78种方法:
□Q□□□□□□
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□
□□□□□□□Q
□□□□□Q□□
□□□Q□□□□

第79种方法:
□Q□□□□□□
□□□□Q□□□
□□□□□□Q□
□□□Q□□□□
Q□□□□□□□
□□□□□□□Q
□□□□□Q□□
□□Q□□□□□

第80种方法:
□□□Q□□□□
□Q□□□□□□
□□□□□□Q□
□□□□Q□□□
Q□□□□□□□
□□□□□□□Q
□□□□□Q□□
□□Q□□□□□

第81种方法:
□□□□□Q□□
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□
□□□□Q□□□
□□□□□□□Q
□Q□□□□□□
□□□Q□□□□

第82种方法:
□Q□□□□□□
□□□□□Q□□
Q□□□□□□□
□□□□□□Q□
□□□Q□□□□
□□□□□□□Q
□□Q□□□□□
□□□□Q□□□

第83种方法:
□□□□Q□□□
□□Q□□□□□
Q□□□□□□□
□□□□□□Q□
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□
□□□Q□□□□

第84种方法:
□□□□Q□□□
□Q□□□□□□
□□□Q□□□□
□□□□□□Q□
□□Q□□□□□
□□□□□□□Q
□□□□□Q□□
Q□□□□□□□

第85种方法:
□□□□□□Q□
□Q□□□□□□
□□□□□Q□□
□□Q□□□□□
Q□□□□□□□
□□□Q□□□□
□□□□□□□Q
□□□□Q□□□

第86种方法:
□□□□Q□□□
□□□□□□Q□
□Q□□□□□□
□□□□□Q□□
□□Q□□□□□
Q□□□□□□□
□□□□□□□Q
□□□Q□□□□

第87种方法:
□□□Q□□□□
□□□□□□Q□
□□□□Q□□□
□□Q□□□□□
Q□□□□□□□
□□□□□Q□□
□□□□□□□Q
□Q□□□□□□

第88种方法:
□□Q□□□□□
□□□□Q□□□
□□□□□□Q□
Q□□□□□□□
□□□Q□□□□
□Q□□□□□□
□□□□□□□Q
□□□□□Q□□

第89种方法:
□□□□□Q□□
□Q□□□□□□
□□□□□□Q□
Q□□□□□□□
□□Q□□□□□
□□□□Q□□□
□□□□□□□Q
□□□Q□□□□

第90种方法:
□□Q□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□□□Q□
Q□□□□□□□
□□□Q□□□□
□□□□□□□Q
□□□□Q□□□

第91种方法:
□□Q□□□□□
□□□□□Q□□
□Q□□□□□□
□□□□□□Q□
□□□□Q□□□
Q□□□□□□□
□□□□□□□Q
□□□Q□□□□

第92种方法:
□□□□Q□□□
□Q□□□□□□
□□□□□Q□□
Q□□□□□□□
□□□□□□Q□
□□□Q□□□□
□□□□□□□Q
□□Q□□□□□


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • 使用Spring AOP实现切面编程的步骤和注意事项
    本文介绍了使用Spring AOP实现切面编程的步骤和注意事项。首先解释了@EnableAspectJAutoProxy、@Aspect、@Pointcut等注解的作用,并介绍了实现AOP功能的方法。然后详细介绍了创建切面、编写测试代码的过程,并展示了测试结果。接着讲解了关于环绕通知的使用方法,并修改了FirstTangent类以添加环绕通知方法。最后介绍了利用AOP拦截注解的方法,只需修改全局切入点即可实现。使用Spring AOP进行切面编程可以方便地实现对代码的增强和拦截。 ... [详细]
author-avatar
徐韵茜YUNXI
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有