Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

整数划分问题动态规划实现+修复在is_prime中的bug #39

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion int_divide.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def divide(m,r,out):
m1-=1
return False


n=6
out=[]
divide(n-1,n,out)
31 changes: 31 additions & 0 deletions int_divide3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
"""
将一个整数,分拆为若干整数的和。例如实现:
4=4
4=3+1
4=2+2
4=2+1+1
4=1+1+1+1

所以divide(4) == 5

这里会将输出这样的分法有多少种。采用动态规划计算,提高速度
参考链接中的C++版本
https://github.com/Sean16SYSU/Algorithms4N/blob/master/Dynamic%20Programming/%E6%95%B4%E6%95%B0%E5%88%92%E5%88%86/Interger_dividence_dp.cpp
"""
def divide(n):
arr = [[0 for i in range(n+1)] for j in range(n+1)]
for i in range(1, n+1):
arr[i][i] = 1
for i in range(1, n+1):
for j in range(1, n+1):
if i < j:
arr[i][j] = arr[i][i]
elif i == j:
arr[i][j] = 1 + arr[i][j-1]
else:
arr[i][j] = arr[i][j-1] + arr[i-j][j]
return arr[n][n]


if __name__=="__main__":
print(divide(4))
2 changes: 1 addition & 1 deletion is_prime.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def isPrime3(n):
if i * i > n:
return True
if n % i == 0:
return Fals
return False

#方法四

Expand Down
74 changes: 39 additions & 35 deletions same_element_in_list.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,61 @@
#问题
# 问题

统计一个一维数组中的各个元素的个数,然后删除多出来的重复元素,并输出结果。

例如:[1,2,2,2,3,3,3,3,3]-->[1,2,3]

#解决思路
## 解决思路

将重复元素的列表中的重复元素进行统计,并将统计结果放在dictionary中,key为元素,value为该元素的个数

**更新此步方法:**上述步骤的功能,能够通过另外一个方法实现,即collections.Counter()
**更新此步方法:** 上述步骤的功能,能够通过另外一个方法实现,即collections.Counter()

然后通过for获取key,得到一个新的列表,就是没有重复元素的列表



#解决(Python)
## 解决(Python)

#!/usr/bin/env python
#coding:utf-8


def count_element(one_list):
element_number = {}
for e in one_list:
number = one_list.count(e) #数出某个元素的个数
element_number[e] = number #生成类似:{1:1,2:3,3:5}的结果,key-element,value-元素的个数
return element_number
```python
#!/usr/bin/env python
#coding:utf-8

#应用collections.Counter()实现count_element(one_list)函数功能,为了便于调试和说明,在另外一个函数里面使用

from collections import Counter

def count_element2(one_list):
return Counter(one_list)
def count_element(one_list):
element_number = {}
for e in one_list:
number = one_list.count(e) #数出某个元素的个数
element_number[e] = number #生成类似:{1:1,2:3,3:5}的结果,key-element,value-元素的个数
return element_number


def no_repeat_element(element_number): #element_number是count_element(one_list)的返回值
no_repeat_list = [key for key in element_number]
return no_repeat_list

if __name__=="__main__":

ls = ["a","a","b","b",'b','c','c']
el_num=count_element(ls)
print el_num
no_repeat = no_repeat_element(el_num)
print no_repeat
#应用collections.Counter()实现count_element(one_list)函数功能,为了便于调试和说明,在另外一个函数里面使用

#解决(python)
from collections import Counter

def count_element2(one_list):
return Counter(one_list)


def no_repeat_element(element_number): #element_number是count_element(one_list)的返回值
no_repeat_list = [key for key in element_number]
return no_repeat_list

if __name__=="__main__":
ls = ["a","a","b","b",'b','c','c']
el_num=count_element(ls)
print el_num
no_repeat = no_repeat_element(el_num)
print no_repeat

```

## 解决(python)

无重复元素个数统计,只有新数组输出

list_a = [1,1,2,2,2,3,3,3,3,3,]
list_b = list(set(list_a))
```python
list_a = [1,1,2,2,2,3,3,3,3,3,]
list_b = list(set(list_a))
```

##qiwsir#gmail.com (# to @)
## qiwsir#gmail.com (# to @)