|
呵呵
看了你的code
你其实是“明确说明理由的”
-- 基本思路
-- 从题目中我们得知:每行最多2个棋子,那整个棋盘最多会有10个棋子。
-- 直觉认为棋盘棋子的最大数是10,让我们来做验证。
-- 第一步,列出所有符合一行中有2个棋子的可能。通过排列组合,一共有10种可能。
-- 第二步,通过多次的笛卡尔连接建立5*5的棋盘,每行2个棋子。一种有100,000种可能。
-- 第三步,排除不符合条件的数据,如果是10个棋子则每列也是2个棋子。斜线则是不多于2个。
-- 最后,排序,加序号。
-- 最后有数据符合要求,说明棋盘棋子的最大数是10是对的。
-- 在没有结果出来以前,设想如果没有数据,也就是说棋盘棋子的最大数小于10,那代码要做下面的调整:
-- 1)列出所有符合一行中最多有2个棋子的可能,一共有16种可能(包括全空),这种笛卡尔就会变成1,000,000种可能。
-- 2)每列也是最多有2个棋子,也就是小于等于的关系。
-- 3)增加一个所有列之和等于最大棋子的条件。
原帖由 yaots 于 2011-3-15 17:20 发表 ![]()
而没有明确说明理由的,应该多扣点分。
说实话
我看见这句话有点不爽 |
|