由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教多重循环的层数不确定的程序怎么写?
相关主题
请问C#里面,如何对N个数组设置循环访问?怎么非ASCII字符就过滤不了呢?[Perl]
how to deal with high dimension for loop?how to sed from grep output in c shell? (转载)
如何编程实现循环嵌套的次数?a linux disk IO question (转载)
多重嵌套循环会不会导致栈溢出?这里的人用BOOST都是用来做什么?
嵌套循环,层数可变 怎么实现请问如何在球体表面均匀分布N个点(赠送包子) (转载)
神经网络研究的致命伤[合集] 问个土问题 printf, 别Peng
what's wrong with this scripts?variable passing?[合集] perl symbol tables 一问
C# HtmlElement.InvokeMember at Amazon.com问个Perl的简单问题
相关话题的讨论汇总
话题: result话题: rank话题: 数列话题: str话题: perm
进入Programming版参与讨论
1 (共1页)
o******1
发帖数: 1046
1
有n个数列An,n不确定,比如
A1 = {a, b, c...}
A2 = {2, 5...}
A3 = {+, -, *, %...}
.
.
.
要找出{An}的直乘空间的所有元素(组合就行,不用排列),比如{a, 2, +...}, {b,
5, *}等等。用上面的例子,如果只有3个数列,第一个数列3个元素,第二个数列2个元
素,第三个数列4个元素,就是要找出所有的3 x 2 x 4 = 24个直乘空间的元素。
如果n是个确定的数,用多重循环就行了。但是n是在run-time确定的。这样的话,程序
如何写比较好呢?
I*****y
发帖数: 602
2
递归?

,

【在 o******1 的大作中提到】
: 有n个数列An,n不确定,比如
: A1 = {a, b, c...}
: A2 = {2, 5...}
: A3 = {+, -, *, %...}
: .
: .
: .
: 要找出{An}的直乘空间的所有元素(组合就行,不用排列),比如{a, 2, +...}, {b,
: 5, *}等等。用上面的例子,如果只有3个数列,第一个数列3个元素,第二个数列2个元
: 素,第三个数列4个元素,就是要找出所有的3 x 2 x 4 = 24个直乘空间的元素。

N******K
发帖数: 10202
3
用进位法
N=[n4 n3 n2 n1] 比如 N=1234
for N=N+1
检查进位
每进一位 就是新的循环

,

【在 o******1 的大作中提到】
: 有n个数列An,n不确定,比如
: A1 = {a, b, c...}
: A2 = {2, 5...}
: A3 = {+, -, *, %...}
: .
: .
: .
: 要找出{An}的直乘空间的所有元素(组合就行,不用排列),比如{a, 2, +...}, {b,
: 5, *}等等。用上面的例子,如果只有3个数列,第一个数列3个元素,第二个数列2个元
: 素,第三个数列4个元素,就是要找出所有的3 x 2 x 4 = 24个直乘空间的元素。

x***4
发帖数: 1815
4
用stack?

,

【在 o******1 的大作中提到】
: 有n个数列An,n不确定,比如
: A1 = {a, b, c...}
: A2 = {2, 5...}
: A3 = {+, -, *, %...}
: .
: .
: .
: 要找出{An}的直乘空间的所有元素(组合就行,不用排列),比如{a, 2, +...}, {b,
: 5, *}等等。用上面的例子,如果只有3个数列,第一个数列3个元素,第二个数列2个元
: 素,第三个数列4个元素,就是要找出所有的3 x 2 x 4 = 24个直乘空间的元素。

g*********e
发帖数: 14401
5
地柜
w******p
发帖数: 166
6
simple way is to use eval, ex. in python:
>>> A
[['a', 'b', 'c'], [2, 5], ['+', '-', '*', '%']]
>>> perm='[(' + ','.join("x"+str(i) for i in range(len(A))) + ')' + ''.join(
" for x"+str(i)+" in A["+str(i)+"]" for i in range(len(A))) + ']'
>>> perm
'[(x0,x1,x2) for x0 in A[0] for x1 in A[1] for x2 in A[2]]'
>>> eval(perm)
[('a', 2, '+'), ('a', 2, '-'), ('a', 2, '*'), ('a', 2, '%'), ('a', 5, '+'),
('a', 5, '-'), ('a', 5, '*'), ('a', 5, '%'), ('b', 2, '+'), ('b', 2, '-'), (
'b', 2, '*'), ('b', 2, '%'), ('b', 5, '+'), ('b', 5, '-'), ('b', 5, '*'), ('
b', 5, '%'), ('c', 2, '+'), ('c', 2, '-'), ('c', 2, '*'), ('c', 2, '%'), ('c
', 5, '+'), ('c', 5, '-'), ('c', 5, '*'), ('c', 5, '%')]
Actually in python it's even simpler:
>>> import itertools
>>> for i in itertools.product(*A): print i
('a', 2, '+')
('a', 2, '-')
('a', 2, '*')
('a', 2, '%')
('a', 5, '+')
('a', 5, '-')
...
An earlier version of itertools.product is implemented like this:
result = set()
for (rank = 0; rank < N; rank++) {
next = set()
for (i in A[rank]) { for r in result {
next.add(r, i) }}
result = next;
}
p*****2
发帖数: 21240
7
n= A1.length*B1.length*C1.length
然后循环就可以了吧?
b*******s
发帖数: 5216
8
see permutation algorithms
so easy

,

【在 o******1 的大作中提到】
: 有n个数列An,n不确定,比如
: A1 = {a, b, c...}
: A2 = {2, 5...}
: A3 = {+, -, *, %...}
: .
: .
: .
: 要找出{An}的直乘空间的所有元素(组合就行,不用排列),比如{a, 2, +...}, {b,
: 5, *}等等。用上面的例子,如果只有3个数列,第一个数列3个元素,第二个数列2个元
: 素,第三个数列4个元素,就是要找出所有的3 x 2 x 4 = 24个直乘空间的元素。

d******e
发帖数: 2265
9
foldl

,

【在 o******1 的大作中提到】
: 有n个数列An,n不确定,比如
: A1 = {a, b, c...}
: A2 = {2, 5...}
: A3 = {+, -, *, %...}
: .
: .
: .
: 要找出{An}的直乘空间的所有元素(组合就行,不用排列),比如{a, 2, +...}, {b,
: 5, *}等等。用上面的例子,如果只有3个数列,第一个数列3个元素,第二个数列2个元
: 素,第三个数列4个元素,就是要找出所有的3 x 2 x 4 = 24个直乘空间的元素。

d******e
发帖数: 2265
10
let a1 = ['a','b','c']
let a2 = ['2', '5']
let a3 = ['+', '-', '*', '/']
let cartProd xs ys = [ y: x | x <- xs, y <- ys]
foldl (cartProd) a' [a2, a3]
["+2a","-2a","*2a","/2a","+5a","-5a","*5a","/5a","+2b","-2b","*2b","/2b","+
5b","-5b","*5b","/5b","+2c","-2c","*2c","/2c","+5c","-5c","*5c","/5c"]
相关主题
神经网络研究的致命伤怎么非ASCII字符就过滤不了呢?[Perl]
what's wrong with this scripts?variable passing?how to sed from grep output in c shell? (转载)
C# HtmlElement.InvokeMember at Amazon.coma linux disk IO question (转载)
进入Programming版参与讨论
w*********a
发帖数: 9279
11
原理上就是一个while loop, 然后用逻辑表达退出条件。
m*****k
发帖数: 731
12
int[] result = {1};
for (int[] a : An){
result=cartProd(result , a);
}
return result;
不可以吗?
h*****n
发帖数: 209
13
用C写一个?
A*****i
发帖数: 3587
14
NP问题么
c*********e
发帖数: 16335
15
所有数列放在一个list,collection之类的结构里面,比如collection
然后就是for loop,
foreach (item in collection) {}

,

【在 o******1 的大作中提到】
: 有n个数列An,n不确定,比如
: A1 = {a, b, c...}
: A2 = {2, 5...}
: A3 = {+, -, *, %...}
: .
: .
: .
: 要找出{An}的直乘空间的所有元素(组合就行,不用排列),比如{a, 2, +...}, {b,
: 5, *}等等。用上面的例子,如果只有3个数列,第一个数列3个元素,第二个数列2个元
: 素,第三个数列4个元素,就是要找出所有的3 x 2 x 4 = 24个直乘空间的元素。

1 (共1页)
进入Programming版参与讨论
相关主题
问个Perl的简单问题嵌套循环,层数可变 怎么实现
容器里边放指针怎么办?神经网络研究的致命伤
PERL问题what's wrong with this scripts?variable passing?
perl problemC# HtmlElement.InvokeMember at Amazon.com
请问C#里面,如何对N个数组设置循环访问?怎么非ASCII字符就过滤不了呢?[Perl]
how to deal with high dimension for loop?how to sed from grep output in c shell? (转载)
如何编程实现循环嵌套的次数?a linux disk IO question (转载)
多重嵌套循环会不会导致栈溢出?这里的人用BOOST都是用来做什么?
相关话题的讨论汇总
话题: result话题: rank话题: 数列话题: str话题: perm