chyanog
发表于 2010-4-21 20:42:39
感觉在mathematica中还可以用IntegerPartition,但一时未找到排除重复元素的良方。
hujunhua
发表于 2010-4-21 22:31:24
IntegerPartitions] 不排除6个数中有相同者。减小数字输出一下就可看到了。
In:= IntegerPartitions]
Out= {{9, 5, 1}, {9, 4, 2}, {9, 3, 3}, {8, 6, 1}, {8, 5, 2}, {8, 4, 3}, {7, 7, 1}, {7, 6, 2}, {7, 5, 3}, {7, 4, 4}, {6, 6, 3}, {6, 5, 4}, {5, 5, 5}}
hujunhua
发表于 2010-4-21 22:34:49
要从数学上探讨这个问题,最好是把它一般化,所以我专起了一帖。
http://bbs.emath.ac.cn/viewthread.php?tid=2320&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D8
chyanog
发表于 2010-4-21 23:11:11
经过努力,找到了一个效率不错的方法
Select],
Length[#] == 6 &] // Length // Timing
(*DeleteDuplicates 可以替换为Union*)
感觉一定还有其他方法,希望大家继续探索。
qianyb
发表于 2010-4-22 08:17:06
用http://bbs.emath.ac.cn/thread-2251-1-1.html中的算法变换一下就可以了
wayne
发表于 2010-4-22 09:11:44
15# qianyb
好像不是一回事吧
qianyb
发表于 2010-4-22 10:11:03
只不过取的个数一样吧,一个是固定取几个数的加等于某个数,一个是不固定取几个数的和小于等于某个数
northwolves
发表于 2010-4-24 23:42:14
递归即可,我以前写过一个VB代码:http://blog.csdn.net/northwolves/archive/2007/12/03/1912809.aspx
northwolves
发表于 2010-4-24 23:48:01
双色球和值如下:
21 1
22 1
23 2
24 3
25 5
26 7
27 11
28 14
29 20
30 26
31 35
32 44
33 58
34 71
35 90
36 110
37 136
38 163
39 199
40 235
41 282
42 331
43 391
44 454
45 532
46 612
47 709
48 811
49 930
50 1055
51 1202
52 1353
53 1528
54 1710
55 1916
56 2130
57 2372
58 2619
59 2896
60 3181
61 3495
62 3816
63 4170
64 4527
65 4918
66 5314
67 5741
68 6171
69 6635
70 7096
71 7591
72 8083
73 8604
74 9118
75 9663
76 10193
77 10751
78 11293
79 11856
80 12398
81 12962
82 13495
83 14046
84 14565
85 15094
86 15586
87 16088
88 16543
89 17004
90 17418
91 17830
92 18190
93 18549
94 18847
95 19141
96 19376
97 19599
98 19760
99 19912
100 19995
101 20068
102 20076
103 20068
104 19995
105 19912
106 19760
107 19599
108 19376
109 19141
110 18847
111 18549
112 18190
113 17830
114 17418
115 17004
116 16543
117 16088
118 15586
119 15094
120 14565
121 14046
122 13495
123 12962
124 12398
125 11856
126 11293
127 10751
128 10193
129 9663
130 9118
131 8604
132 8083
133 7591
134 7096
135 6635
136 6171
137 5741
138 5314
139 4918
140 4527
141 4170
142 3816
143 3495
144 3181
145 2896
146 2619
147 2372
148 2130
149 1916
150 1710
151 1528
152 1353
153 1202
154 1055
155 930
156 811
157 709
158 612
159 532
160 454
161 391
162 331
163 282
164 235
165 199
166 163
167 136
168 110
169 90
170 71
171 58
172 44
173 35
174 26
175 20
176 14
177 11
178 7
179 5
180 3
181 2
182 1
183 1
pla_zgh
发表于 2010-4-29 22:34:27
直接从1到33中取6个不同的数,有C(33,6)种取法,然后求和判断是否为102,是的话,N=N+1.
方法比较笨。