| 
 | 
下面是一段 python 语言的小代码,处理一般的“分拆”问题. 
 
 
 
- from math import *
 
  
- def splt(n,k):
 
 -     d = 10**k
 
 -     a = n%d
 
 -     b = (n-a)/d
 
 -     return a,b
 
 -     
 
 - def fds(n,k):
 
 -     if n < 1:
 
 -         return []
 
 -     if k < n and n < 10:
 
 -         return []
 
 -     if k == n:
 
 -         return [[k]]
 
 -     ss = []
 
 -     m = 0
 
 -     while True:
 
 -         m += 1
 
 -         a,b = splt(n,m)
 
 -         if b == 0:
 
 -             break
 
 -         if a == 0:
 
 -             continue
 
 -         tt = fds(b,k-a)
 
 -         ll = len(tt)
 
 -         if ll > 0:
 
 -             for j in range(ll):
 
 -                 (tt[j]).append(a)
 
 -             ss = ss+tt
 
 -     return ss
 
  复制代码 |   
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
 
 
 
 |