RT,这道题题解区所有这么写的代码都有问题吧:ans *= ( a[i] - i + 1 ) ;
对应输入数据:
5
1 2 4 4 5
显然,第三个数只能选择3,第四个数只能选择4,所以只有一种选法。但是代码输出为2。
这就涉及到兔子在未编号前是否有序的问题。如果兔子是有序的,那么这两只编号应为3和4的兔子的顺序是没有区别的。如果兔子是无序的,那么这两只兔子的编号顺序就有 3 4
和 4 3
两种。
而且,从另一个角度讲,我们要做的是给兔子编号,也就是说原来的兔子是无序的,兔子和兔子是没有差别的。也就是说在编号后,兔子和兔子之间才有区别。
所以如果答案应为 2
,题面中应该注明兔子和兔子是不一样的。