请教算法:数字1到10,每个数字最多5个,最少0个。3个一顺,怎么组合?

HongHuer 2010-05-06 11:07:45
请教算法:数字1到10,每个数字最多5个,最少0个。3个一顺。比如 123 为一句,234为1句,7891句,8910为1句。

只要连续的3个数字就可以为1句。
或者 相同的3个也为1句,比如 111,222,999。

任意给1列15个数字。比如 111 123 445566 666 这样的。

请问,怎么组合才可以使所有的数字都成句。

使用什么算法和数据结构比较好?

谢谢。
...全文
298 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2010-05-06
  • 打赏
  • 举报
回复
任意给1列15个数字, 比如 111 123 445566 666 这样的.
Michael的方法可以解决问题了.
kenyyy 2010-05-06
  • 打赏
  • 举报
回复
不能顺的话就简单了,可以直接贪心的
因为对于111来说,如果你顺123 123 123可以的话,你也可以连111 222 333了
所以优先选择111这种类型的,然后把剩下的顺123这样的,只要从小到大去找就可以了

如果要加1个赖子进去,那你就把这个赖子作为1到10所有的情况枚举一遍就行了
HongHuer 2010-05-06
  • 打赏
  • 举报
回复
910 1 不能顺。

其实只有14张牌。只有加1个赖子进去。赖子可以做任何牌。
keeya0416 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kenyyy 的回复:]
9 10 1这3个数可以顺不?
[/Quote]
应该是不行吧
如果可以的话 3 楼的方法貌似得修改下
没细想 可能我想错了
kenyyy 2010-05-06
  • 打赏
  • 举报
回复
9 10 1这3个数可以顺不?
michael122 2010-05-06
  • 打赏
  • 举报
回复
不知道理解错没有
michael122 2010-05-06
  • 打赏
  • 举报
回复
很简单吧
先统计一个每个数字出现的频率
1:4次 2:1次 3:1次 4:2次 5:2次 6:5次
然后从1开始,发现1的个数不是3的倍数, 必须产生一个123
然后1的个数为3了,2的个数为0 3的个数为0
找到下一个不是3的倍数的数字4
产生2条456
这样做完以后剩下的都是3的倍数,产生111,666
kenyyy 2010-05-06
  • 打赏
  • 举报
回复
复杂版的匹配问题,数据量小的话可以写个搜索试试
keeya0416 2010-05-06
  • 打赏
  • 举报
回复
怎么感觉和纸牌很像哦
HongHuer 2010-05-06
  • 打赏
  • 举报
回复
谢谢了。

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧