作者liu2007 (薯)
看板C_and_CPP
标题[问题] 0与1的排列组合
时间Sat Sep 26 03:48:40 2009
好烦呀
这个是一个作业
题目就是:输入一个数字n(正整数)
请排列出n个位元的0101的排列组合
不可使用 0,1,2,3,4,5,6.....的方式累加转二进制补零的方式
也不可以使用任何除2进位之类有的没有的方法
只能:0个1的排列、1个1的排列、2个1的排列.....n个1的排列
我的方法是:若n=6
0个1: 000000
1个1: 100000
010000
001000
000100
000010
000001
2个1: 110000
101000
100100
100010
100001 最右边的1已经到底了
011000 右边数过来倒数第二个1往右shift一位
最右边的1接在第二个1的下一个位元,继续跑
010100
010010
010001
001100
001010
001001
000110
000101
000011
3个1: 111000
110100
110010
110001
101100
101010
101001
100110
100101
100011
011100
011010
011001
010110
010101
010011
001110
001101
001011
000111
以下同上
这是我的想法
印象中老师说可以用递回写.....
我已经想好终止条件了:当1的长度只有一个的时候边印边往右shift
可是我不知道要怎麽样往终止条件靠近.....
有想法但是程式码就是想不出来....
不知道有没有乡民可以帮我一把.....
希望我的说明大家可以看的董
--
肝不好 ▁▁ ● ◤
肝若好
人生是黑白的 ▏ ◤
考卷是空白的
▏ ◤
、 ﹐
● ●b 囧 ▎ ●> ● ◤
▌ ﹍﹍ 0 ▊囧>
干...
▲ ■┘ ■ ▎ ■ █◤ ▌ ㄏ▋ ︶■
〈﹀ ∥ ▁▁∥ ▎ ﹀〉◤
▋ ▊ 〈\
ψcockroach727
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.232.63.167
※ 编辑: liu2007 来自: 118.232.63.167 (09/26 03:48)
1F:→ tonyhcc:我的想法是当 n=1 只有两种情0和1 n=2 就是递回去呼叫 09/26 03:53
2F:→ tonyhcc:n=1 的情形加以组合 09/26 03:54
3F:推 dendrobium:当成是binary tree 从root到各leaf 的path 09/26 14:53
4F:→ jaw109:不能累加 那我累减可不可以 09/26 23:18