作者wa007123456 (大笨羊)
看板C_and_CPP
标题[问题] 如何实做一个不会重复的"六进位"?
时间Fri Nov 11 17:37:27 2011
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
问题(Question):
是这样的,我想写一个程式,里面有1~6的字元
最高位数是6位,且阵列上的值不可重复
例如: arr[0][1][2][3][4][5] <=正确!
arr2[0][0][1][2][3][4] <=错误!
小弟其实想用程式去算出一个题目
就是有一个密码箱,有六个数字要填,其中1,2不能排首两位
3,4不能排中间两位 5,6不能排後面两位
我大概知道是6!=720 是全部的可能(未含条件)
而含条件後的答案是80 (经过排列组合的计算)
我已经想了一个下午了....
但是还是没有头绪 小弟我是个初学者@@
有请前辈们赐教>< 感谢
ps:这是我突发奇想的问题...
另外有没有大大可以推荐有关"资料结构"的书籍呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.221.15
※ 编辑: wa007123456 来自: 125.228.221.15 (11/11 17:40)
1F:→ x000032001:排列组合喔... 11/11 17:43
2F:→ x000032001:我可以说版规2吗..XD 请附上自己的想法 11/11 17:45
可能要先写好排列组合常用的运算
像是C(X,Y) ,P(X)...还有数阶的函式(用递回)
但是最大的问题就是 程式没办法做"分类"的动作
他只能很暴力的算出来吧@@?
毕竟电脑是计算机.....但是不写出这题我不会死心的..
※ 编辑: wa007123456 来自: 125.228.221.15 (11/11 17:48)
3F:→ LawlietDo:才6!就六层loop 最後一层做判断 符合的话就输出阿.... 11/11 17:49
我也是写了六个for..
但是问题就是在..每位不能有重复的数字@@
不然判断 count 会多出许多不正确的答案@@
4F:→ james732:最暴力的方式就是把所有可能的解都生出来再删掉...XD 11/11 17:51
※ 编辑: wa007123456 来自: 125.228.221.15 (11/11 17:52)
5F:→ x000032001:开个阵列记录有没有被用过不就得了 11/11 17:52
6F:→ x000032001:搞成全域然後递回一下 就比for高级了"一点点".... 11/11 17:53
7F:→ tropical72:这不就是 next_perm 的东西吗? 11/11 17:54
8F:→ x000032001:对阿(死) 我是觉得你先把程式写出来 再去改他 11/11 17:54
9F:→ wa007123456:楼上@@ 那是甚麽? 11/11 17:55
10F:→ james732:我很不擅长这种问题耶,有需要加强吗...? 11/11 17:55
11F:→ tropical72:oh,有条件限制的,我的作法和 james 一样,合条件的话才 11/11 17:55
12F:→ x000032001:6个for也好阿 看看哪边重复 哪边多余 再做修正 11/11 17:55
13F:→ james732:原po可以拿「c++ next_permutation」去google看看 11/11 17:55
14F:→ wa007123456:阿 有一点头绪了! 11/11 17:56
15F:→ x000032001:让他练练吧 虽然我以前也都#include <algorithm> ... 11/11 17:56
16F:→ wa007123456:先记录全部的数字 把不合格的筛检 最後在弄上分类 11/11 17:56
17F:→ tropical72:加到 solution,类似的东西 :#1DU99hiU ,最後慢慢check. 11/11 17:56
18F:→ tropical72:补一下, 转去 Prob_Solve 可能较适合。 11/11 18:08
※ wa007123456:转录至看板 Prob_Solve 11/11 18:11
19F:推 CJHhelper:不知道你的对象 是index 还是值 还是值去当作index? 11/11 18:30
20F:→ bleed1979:不会重复可行,但是不会产生不合条件的很难。 11/11 19:18
21F:→ bleed1979:再怎麽样应该都会产生不合条件再用条件式辅助剔除。 11/11 19:18
22F:→ bleed1979:变成结果都是符合条件但是过程中会有不合条件的出现。 11/11 19:20
※ 编辑: wa007123456 来自: 125.226.11.24 (11/12 10:31)