Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ret = []
# @functools.lru_cache(None)
def dfs(curr, l, r):
if l == n and r == n:
ret.append(curr)
if r > l: return
if l < n: dfs(curr + "(", l + 1, r)
if r < n: dfs(curr + ")", l, r + 1)
dfs('', 0, 0)
return ret

No matter what field you are in, you can do research in the growing period, dedicate into the industry in the steady period, and develop education in the saturation period. Obviously, Andrew Ng is a sensible person.

To be honest, we have a decent job, house, car at the age of 25, should not complain more. However, cars/houses/good jobs, all of them, are general commodities, others may have them of ten times or even of hundred times than of what I have. But the ten years of youth, everyone has only one time.

So, please remember this thing, when you are 26 years old and decide whether you want to be a 30-year-old Doctor.

Actually, we have been aware of the trending of massive scale parameters in machine learning. The number of CPUs and the access of data determines the final performance, but not the person who researches machine learning algorithms.

A method of computer multiplication and division is proposed which uses binary logarithms. The logarithm of a binary number may be determined approximately from the number itself by simple shifting and counting. A simple add or subtract and shift operation is all that is required to multiply or divide.

#include<stdio.h>
int main() {
float a = 12.3f;
float b = 4.56f;
int c = *(int*)&a + *(int*)&b - 0x3f800000;
printf("Approximate result：%f\n", *(float*)&c);
printf("Accurate result：%f\n", a * b);
return 0;
}

import numpy as np
import networkx as nx
from functools import reduce
import matplotlib.pyplot as plt
connect_graph = np.array([[0, 1, 0, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1],
[0, 0, 1, 0, 0]])
def ring_add(a, b):
return a or b
def ring_multi(a, b):
return a and b
def dot_product(i, j):
row = connect_graph[i]
column = connect_graph[:,j]
return reduce(ring_add, [ring_multi(a, b) for a, b in zip(row, column)])
def next_generation(connect_graph):
candidate_number = connect_graph.shape[0]
new_connect_graph = np.zeros((candidate_number, candidate_number))
for i in range(candidate_number):
for j in range(candidate_number):
new_connect_graph[i][j] = dot_product(i,j)
return new_connect_graph
new_connect_graph = next_generation(connect_graph)
def draw_graph(connect_graph):
G = nx.DiGraph()
candidate_number = connect_graph.shape[0]
node_name = list(range(candidate_number))
G.add_nodes_from(node_name)
for i in range(candidate_number):
for j in range(candidate_number):
if connect_graph[i][j]:
G.add_edge(i, j)
nx.draw(G, with_labels=True)
plt.show()
draw_graph(new_connect_graph)