排列组合问题证明

有n个数在输入序列中,其中j个是不相同的。按顺序输出到输出序列,每次输出的时候都和输出序列中的每一个数字比较,如果遇到相同的数字,则把该数字从输出序列中删除,加入到输入序... 有n个数在输入序列中,其中j个是不相同的。按顺序输出到输出序列,每次输出的时候都和输出序列中的每一个数字比较,如果遇到相同的数字,则把该数字从输出序列中删除,加入到输入序列的末端;如果比较之后,没有相同的数字,则把该数字加入输出序列的末端。请问,最多比较多少次?答案是:(N-1)*(N-1)- (J-1)(J-2)/2。请证明。
补充说明:
一开始,
输入序列:1,2,3,3,2,2
输出序列:
比较次数:0
然后输入序列第一个数字,进输出序列。因为输出序列没有元素,所以不需要比较。
输入序列:2,3,3,2,2
输出序列:1
比较次数:0
然后第二个,第三个元素输出
输入序列:3,3,2,2
输出序列:1,2
比较次数:1
输入序列:3,2,2
输出序列:1,2,3
比较次数:3
然后第四个元素3输入,一个个和输出序列的元素进行比较之后,发现有3,则把原来的3从输出序列中删除,加入到输出序列的最后
输入序列:2,2,3
输出序列:1,2
比较次数:6
同样,第五个元素
输入序列:2,3,2
输出序列:1
比较次数:8
第六个元素
输入序列:3,2
输出序列:1,2
比较次数:9
第七个元素
输入序列:2
输出序列:1,2,3
比较次数:11
第八个元素
输入序列:2
输出序列:1,3
比较次数:13
第九个元素
输入序列:
输出序列:1,3,2
比较次数:15
展开
心里美678
2012-07-27 · TA获得超过6665个赞
知道大有可为答主
回答量:1178
采纳率:100%
帮助的人:610万
展开全部
既然是问最多比较多少次,那么就要按极端情况考虑。
假设输出序列中已有j个元素,输入序列中有n-j个元素,
极端情况就是这n-j个元素与输出序列中的第j个元素相同。
因此,第一次比j次,第二次比j-1次,输入序列元素减1,输出序列保持j个
故 需比较 (n-j)(j+j-1)=(n-j)(2j-1) 次后,输入序列为0

而j个不同元素放到输出序列,需比较 0+1+2+...+(j-1)=j(j-1)/2 次
因此 共比较 j(j-1)/2+(n-j)(2j-1) 次(与答案不同)

答案是 (N-1)*(N-1)- (J-1)(J-2)/2。如果其中N,J 与题目的n,j 含义相同,感觉这个答案有问题。
举例来说,3个1在输入序列中,显然结果只有一个,共比较2次。
而根据(N-1)*(N-1)- (J-1)(J-2)/2,应该是 N=3,J=1,结果是4次,不对吧。
更多追问追答
追问
答案肯定没错。。。定理来着。。
追答
那就是条件不符合,否则怎么解释3个1在输入序列中的结果呢?
22513991
2012-07-24 · TA获得超过129个赞
知道答主
回答量:362
采纳率:0%
帮助的人:119万
展开全部
注意这样每一种组合一一对应一种放法,所以取值方法是为C(N+n,N)
追问
为什么啊,然后呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式