P*******b 发帖数: 1001 | | M********5 发帖数: 715 | | M********5 发帖数: 715 | 3 R+G+B
1+1+4: 2种(两种不同的颜色相邻和不相邻)
1+2+3: 3种,两个G相邻的有两种情况,相对的有一种情况
1+3+2:3种
1+4+1:2种
2+1+3:3种
2+2+2:4种
2+3+1:3种
3+1+2:3种
3+2+1:3种
4+1+1: 2种
所以总共28种? | p******n 发帖数: 32 | 4 C(6,1)*C(5,1) + C(6,1)*C(5,2) + C(6,1)*C(5,3) + C(6,1)*C(5,4)
+ C(6,2)*C(4,1) + C(6,2)*C(4,2) + C(6,2)*C(4,3)
+ C(6,3)*C(3,1) + C(6,3)*C(3,2)
+ C(6,4)*C(2,1)
for (i = 1; i < 5; i++)
for (j = 1; j < 6 - i; j++) {
k = 6 - (i+j);
printf("%d red, %d yellow, %d green\n", i, j, 6 - (i+j));
/*permutation(a, i, j, k);*/
}
permutation(a,i,j,k)要实现在6个元素的数组中打印i个元素是red, j个元素是yellow
,k
个元素是green的所有排列。
【在 P*******b 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 咋做? : thanks
| M********5 发帖数: 715 | 5
我觉得这道题好像更多的是考排列组合,不是算法吧
立方体是有对称性的,比如说1+1+4的情况,不可能像你说的会有30种的
这个题应该不是这样子考虑的
【在 p******n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : C(6,1)*C(5,1) + C(6,1)*C(5,2) + C(6,1)*C(5,3) + C(6,1)*C(5,4) : + C(6,2)*C(4,1) + C(6,2)*C(4,2) + C(6,2)*C(4,3) : + C(6,3)*C(3,1) + C(6,3)*C(3,2) : + C(6,4)*C(2,1) : for (i = 1; i < 5; i++) : for (j = 1; j < 6 - i; j++) { : k = 6 - (i+j); : printf("%d red, %d yellow, %d green\n", i, j, 6 - (i+j)); : /*permutation(a, i, j, k);*/ : }
| P*******b 发帖数: 1001 | 6 这个,结果是多少?
【在 p******n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : C(6,1)*C(5,1) + C(6,1)*C(5,2) + C(6,1)*C(5,3) + C(6,1)*C(5,4) : + C(6,2)*C(4,1) + C(6,2)*C(4,2) + C(6,2)*C(4,3) : + C(6,3)*C(3,1) + C(6,3)*C(3,2) : + C(6,4)*C(2,1) : for (i = 1; i < 5; i++) : for (j = 1; j < 6 - i; j++) { : k = 6 - (i+j); : printf("%d red, %d yellow, %d green\n", i, j, 6 - (i+j)); : /*permutation(a, i, j, k);*/ : }
| w**n 发帖数: 175 | 7 symmetrical paints can only be counted as one,
【在 p******n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : C(6,1)*C(5,1) + C(6,1)*C(5,2) + C(6,1)*C(5,3) + C(6,1)*C(5,4) : + C(6,2)*C(4,1) + C(6,2)*C(4,2) + C(6,2)*C(4,3) : + C(6,3)*C(3,1) + C(6,3)*C(3,2) : + C(6,4)*C(2,1) : for (i = 1; i < 5; i++) : for (j = 1; j < 6 - i; j++) { : k = 6 - (i+j); : printf("%d red, %d yellow, %d green\n", i, j, 6 - (i+j)); : /*permutation(a, i, j, k);*/ : }
| x**********n 发帖数: 1262 | 8 这可怎么搞啊, 难道面试要记公式?
http://en.wikipedia.org/wiki/Burnside's_lemma
我估计是你给个排列组合的计算推导过程给他吧, 你给个这个定理反而没啥意思啊 | P*******b 发帖数: 1001 | 9 我觉得记公式肯定不行吧。
【在 x**********n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这可怎么搞啊, 难道面试要记公式? : http://en.wikipedia.org/wiki/Burnside's_lemma : 我估计是你给个排列组合的计算推导过程给他吧, 你给个这个定理反而没啥意思啊
| i***1 发帖数: 95 | 10 Write a program to enumerate all possiblities.
3^6 = 729
Then compare them.
The trick is how to compare two layouts. Another exercise. Done.
Is this a programming position? |
|