ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 蒋昊

[求助] 1到8个数字不重复排列

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-23 13:59 | 显示全部楼层
zxh361 发表于 2014-9-23 13:41
香川老师,您给出的这几组数字,第二列都是重复的,不符合楼主要求的吧。
楼主要求是,
1.每一行每一列 ...

【不知道能不能有解,得这么多组合全部历遍并判断是否符合要求。】


肯定无解。

不需要遍历全部组合。这个是树叉分支的遍历检查。
任何位置只要有一支不符合,则后面所有的组合都不需要检查了。

所以很容易得到结论:无解。



TA的精华主题

TA的得分主题

发表于 2014-9-23 14:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 zxh361 于 2014-9-23 14:22 编辑
香川群子 发表于 2014-9-23 13:59
【不知道能不能有解,得这么多组合全部历遍并判断是否符合要求。】
香川群子 发表于 2014-9-23 13:32
现在不是要算多久的问题,而是能不能算出符合条件的解。

我的结论是:本题无解。

香川老师,您给出的这几组数字,第二列都是重复的,不符合楼主要求的吧。
楼主要求是,
1.每一行每一列不能有重复。
2.每一行相邻的两个数不能在其它行重复出现。
3.每一行的第一个数字就是上一行最后一个数字,
不知道能不能有解,得所这么多组合全部历遍并判断是否符合要求。
举个例子吧
三个数
第一行 1 2 3
第二行 3 1 2不符合 (有相邻重复)3 2 1 尾数为第一行的第一个数字,不符合,
第一行换成 132,213, 231, 312, 321,结果都是一样、
所以三个数是无解。

四个数
第一行  1 2 3 4
第二行  4 2 1 3     4 1 3 2     4 3 2 1排除
第三行  3 2 4 1排除     2 1 4 3    
第四行  3 4 2 1 排除3 2 4 1排除
四个数无解。


五个数以上都比较多了,难排除,估计也是一样无解。


TA的精华主题

TA的得分主题

发表于 2014-9-23 14:34 | 显示全部楼层
蒋昊 发表于 2014-9-23 13:08
别生气嘛大哥,相邻的“5,6”在整个排列中只能出现一次,“6,5”也一样。

不是生气,也用不着生气,只是要求多,本人无法做出,只好退出

TA的精华主题

TA的得分主题

发表于 2014-9-23 14:39 | 显示全部楼层
zxh361 发表于 2014-9-23 14:20
香川老师,您给出的这几组数字,第二列都是重复的,不符合楼主要求的吧。
楼主要求是,
1.每一行每一 ...

【1.每一行每一列不能有重复。】

楼主早已放弃【每一列不能有重复】的要求了。

TA的精华主题

TA的得分主题

发表于 2014-9-23 18:48 | 显示全部楼层
看来,直接看17楼好了……

TA的精华主题

TA的得分主题

发表于 2014-9-23 20:24 | 显示全部楼层
蒋昊 发表于 2014-9-23 13:08
别生气嘛大哥,相邻的“5,6”在整个排列中只能出现一次,“6,5”也一样。

我问
有一行中相邻出现“5,6”,其他行就不能再出现{5,6}相邻?{6,5}也不行

——我的意思是,有一行中相邻出现{5,6}后,其他行就不能再出现{5,6}或{6,5}(比如走八卦,八八六十四步中,相邻两点,只允许连着走过一次)?还是一行中相邻出现“5,6”后,不能再出现{5,6}相邻、但出现{6,5}可以,或者相邻出现“6,5”后,不能再出现{6,5}相邻、但{5,6}可以?(比如走八卦,相邻两点,允许正序一次、逆序一次)
其实,还有一个前提:怎样算相邻,是数字大小相差1,({1,2}、{5,4})这样,还是相邻单元格。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-23 20:41 | 显示全部楼层
wangjguo44 发表于 2014-9-23 20:24
我问
——我的意思是,有一行中相邻出现{5,6}后,其他行就不能再出现{5,6}或{6,5}(比如走八卦,八八六十 ...

我就是练习八挂用的,1.2.3.4.5.6.7.8分别代表的的是八挂掌的基础八掌,现在教练教的只有一个顺序,所以我就想排一下怎么才能每掌都换到,就是要八掌可以任意换,这样我一重复的练一遍就是64遍。谢谢大哥

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-23 20:43 | 显示全部楼层
wangjguo44 发表于 2014-9-23 20:24
我问
——我的意思是,有一行中相邻出现{5,6}后,其他行就不能再出现{5,6}或{6,5}(比如走八卦,八八六十 ...

我就是练习八挂用的,1.2.3.4.5.6.7.8分别代表的的是八挂掌的基础八掌,现在教练教的只有一个顺序,所以我就想排一下怎么才能每掌都换到,就是要八掌可以任意换,从1.2.3.4.5.6.7.8分别去换1.2.3.4.5.6.7.8,这样我不重复的练一遍就是64遍。谢谢大哥

TA的精华主题

TA的得分主题

发表于 2014-9-23 20:49 | 显示全部楼层
香川群子 发表于 2014-9-23 13:15
如果规则确实如此,则本题无解!

规则见14楼,排除第4条。

关于第三条,
2. 同一行内,相邻两个数字的排列只允许出现一次。

我反复看了楼主的帖子,似乎不是这意思,他多次提到的是:“每两个连续的数字只能出现一次”,(前面有了12,后面就不能再出现12了)并没有说“同一行内”。

如果说条件是:
1. 每一行由 1-8 的不重复数字的不同排列组成。
2. 从第2行起,首位和上一行末位相同。
3. 在整个排列中,相邻两个数字的排列只允许出现一次。

应该有解,而且有不少解。如果{1,2}和{2,1}算是不同的排列,有效解更多。
若还有第四个条件:同一列内数字不重复出现。假如{1,2}和{2,1}算是不同的排列,还是有解,只是很少罢了,如果{1,2}和{2,1}算是相同的排列,有没有解,我不敢肯定,但是,即使有,也是凤毛麟角极少数而已。

TA的精华主题

TA的得分主题

发表于 2014-9-23 21:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这种节奏?
QQ图片20140923205954.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-10-7 06:40 , Processed in 0.042635 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表