# -*- coding: utf-8 -*-"""
Created on Sat Jan 1 11:22:44 2022
Function: 字母异位词分组
@author: 小梁aixj
"""classSolution(object):defgroupAnagrams(self, strs):
strs.sort()hash={}for s in strs:
key = self.hash_key(s)try:hash[key].append(s)except KeyError:hash[key]=[s]returnhash.values()defhash_key(self, s):
table =[0]*26for ch in s:
index =ord(ch)-ord('a')
table[index]+=1returnstr(table)#%%
s = Solution()print(s.groupAnagrams(strs =['eat','tea','tan','ate','nat','bat']))
3,运行结果
二,N 皇后
1,程序简介
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。
1 <= n <= 9
皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。
以下程序实现了这一功能,请你填补空白处内容:
classSolution(object):defsolveNQueens(self, n):if n ==0:return0
res =[]
board =[['.']* n for t inrange(n)]
self.do_solveNQueens(res, board, n)return res
defdo_solveNQueens(self, res, board, num):if num ==0:
res.append([''.join(t)for t in board])return
ls =len(board)
pos = ls - num
check =[True]* ls
for i inrange(pos):for j inrange(ls):if board[i][j]=='Q':
______________________;for j inrange(ls):if check[j]:
board[pos][j]='Q'
self.do_solveNQueens(res, board, num -1)
board[pos][j]='.'if __name__ =='__main__':
s = Solution()print(s.solveNQueens(4))
2,程序代码
# -*- coding: utf-8 -*-"""
Created on Sat Jan 1 11:23:48 2022
Function: N 皇后
@author: 小梁aixj
"""classSolution(object):defsolveNQueens(self, n):if n ==0:return0
res =[]
board =[['.']* n for t inrange(n)]
self.do_solveNQueens(res, board, n)return res
defdo_solveNQueens(self, res, board, num):if num ==0:
res.append([''.join(t)for t in board])return
ls =len(board)
pos = ls - num
check =[True]* ls
for i inrange(pos):for j inrange(ls):if board[i][j]=='Q':
check[j]=False
step = pos - i
if j + step < ls:
check[j + step]=Falseif j - step >=0:
check[j - step]=Falsebreakfor j inrange(ls):if check[j]:
board[pos][j]='Q'
self.do_solveNQueens(res, board, num -1)
board[pos][j]='.'if __name__ =='__main__':
s = Solution()print(s.solveNQueens(4))
from random import random
from math import sqrt
N=eval(input("请输入次数:"))
K=0for i inrange(1,N+1):
x,y=random(),random()
dist =sqrt(x**2+y**2)
_____________________;
pi=4*(K/N)print("圆周率值:{}".format(pi))
2,程序代码
# -*- coding: utf-8 -*-"""
Created on Sat Jan 1 11:23:59 2022
Function: 编写函数计算圆周率
@author: 小梁aixj
"""from random import random
from math import sqrt
N=eval(input("请输入次数:"))
K=0for i inrange(1,N+1):
x,y=random(),random()
dist =sqrt(x**2+y**2)if dist<=1.0:
K=K+1
pi=4*(K/N)print("圆周率值:{}".format(pi))