线性表
动态与静态数据结构在计算机内存中的存储方式有何不同?各有何优缺点?
参考答案:静态存储方式(顺序存储)——逻辑相邻,物理相邻。优点:便于数据的随即存取,结点存储利用率高(不需要存储指针);缺点:存取数据时要移动大量的元素,由于事先不知道存储结点的最大个数,所以应该分配尽可能大的存储空间,从而可能会造成空间浪费!
动态存储方式(链式存储)——逻辑相邻,物理不一定相邻。优点:动态分配和释放存储单元,避免了空间浪费,插入删除结点不需要移动大量的其他结点,只需要修改有限的指针变量;缺点:不具备顺序存储结构随即存取的优点,查找结点需要从表头开始,一个结点的存储利用率较低,以为每个结点都要存储一个指向下个结点的指针变量。
栈和队列
栈和队列的区别?
栈和队列都是操作受限的线性表,因此二者都具备线性表的一般特性;对于栈,元素进栈出栈的原则是“后进先出”,即LIFO,对于队列,元素进出队列的原则是“先进先出”,即FIFO。
迷宫算法
算符优先法
括号配对
递归
N皇后
def isSafe(board,row, col):
for i in range(row):
if board[i][col] == 1:
return False
for i,j in zip(range(row,-1,-1),range(col,-1,-1)):#左上对角线
if board[i][j] == 1:
return False
for i,j in zip(range(row,-1,-1),range(col,N,1)):#右上对角线
if board[i][j] == 1:
return False
return True
def Nqueen(row=0):
if row==N:
printSolution(board)
for i in range(N):#判断该行的哪一列可以进行皇后放置
if isSafe(board,row,i):
board[row][i]=1
if Nqueen(row+1):
return True
board[row][i]=0#进行到这一步就说明递归过程中此路不通,因此不在这里放置皇后
return False
def printSolution(board):
for row in board:
line = ""
for col in row:
if col == 1:
line += "Q\t"
else:
line += ".\t"
print(line, "\n")
print('\n')
if __name__=='__main__':
N=5
board = [[0 for _ in range(N)] for _ in range(N)]
Nqueen()
class solution(object):
def solveNQueens(self, n):
self.helper([-1] * n, 0, n)
def helper(self, columnPosition, rowindex, n):
if rowindex == n:
self.printSolution(columnPosition, n)
return
for column in range(n):
columnPosition[rowindex] = column#判断该行的哪一列可以进行皇后放置,最后里面的值便是一直递归下去可行的值
if self.isValid(columnPosition, rowindex):
self.helper(columnPosition, rowindex + 1, n)
def isValid(self, columnPosition, rowindex):
if len(set(columnPosition[:rowindex + 1])) != len(columnPosition[:rowindex + 1]):#判断前面行的皇后的列是否与rowindex皇后的列相等
return False
for i in range(rowindex):
if abs(columnPosition[i] - columnPosition[rowindex]) == int(rowindex - i):#则说明在对角线上
return False
return True
def printSolution(self, columnPosition, n):
for row in range(n):
line = ""
for column in range(n):
if columnPosition[row] == column:
line += "Q\t"
else:
line += ".\t"
print(line, "\n")
print('\n')
solution().solveNQueens(4)
斐波那契,n!(此处不举例)
字符串
树行结构
图
查找
排序