我正在尝试生成所有可能的长度N的列表,总和为S.我已经编写了一些代码来执行此操作,但是在任何大的(特别是,我希望N = 5,S = 100),我遇到了内存溢出错误.
我正在寻找一个更好的问题解决方案,或者一种改进我的代码的方法,以便我可以在N = 5,S = 100上运行它.下面这两个程序协同工作,在嵌套列表中创建所有可能的数字组合,然后将它们重新设置为正确的格式.下面再现了一些样本输出.
我知道我的代码不是最好的.我是一名工程师(我知道,我知道),所以编码并不完全是我的专长.我感谢您提供的任何帮助.
编辑:我只是想澄清一些事情.首先,列表中的零可以,列表可以包含相同数字的倍数,列表中数字的顺序很重要.
def nToSum(N,S):
''' Creates a nested list of all possible lists of length N that sum to S'''
if N <= 1: #base case
return [S]
else:
L = []
for x in range(S+1): #create a sub-list for each possible entry of 0 to S
L += [[x,nToSum(N-1,S-x)]] #create a sub-list for this value recursively
return L
def compress(n=[],L): #designed to take in a list generated by nToSum …Run Code Online (Sandbox Code Playgroud) 我遇到了让Powershell按照我期望的方式行事的问题.
我正在尝试使用get-wmiobject win32_networkconnection列出当前用户的映射驱动器,因此我可以遍历驱动器.
当我运行时,$var = get-wmiobject win32_networkconnection | select -expand localname我得到了我所期望的:映射网络连接的驱动器号列表.
但是,当我跑步时,$var = (get-wmiobject win32_networkconnection).localname我什么也得不到.它似乎没有正确选择属性.
这是有问题的,因为理想情况下,我想遍历所有驱动器,然后为每个驱动器选择各种属性.相反,似乎我将被迫将迭代器整合在一起,然后一次迭代所有变量(在我看来不是很优雅).
我对Powershell并不熟悉,所以可能会有一些我不知道的事情.但是,从我所读到的,这应该是有效的.这是一个限制get-wmiobject吗?