有n个整数. 仅使用加减运算(不能使用IF判断,可使用最大最小值函数),求出这n个数中有几个互不相同 的数. 如有:1 2 4 2 3 2 3 3 4,则有4个互不相同的数.

 
没有IF语句的话,算法只有一个分支,需要用max()或min()来 统计重复的数字个数
首先可以用max()函数或min()函数对n个整数排序。
如冒泡排序法:
 {最大数沉底}
 for each integer A[i] of A[n]
   large = max(A[i],A[i+1])
   small = min(A[i],A[i+1])
   A[i+1] = large
   A[i] = small
 
得到升序排列的n个整数B[n]以后,
统计相同的数的重复次数:
   c = 0
   for each integer B[i] of B[n]
     c = c + max( (B[i+1]-B[i])  , 1)  { 每出现一个重复数,都会使c比B[n-1]-B[0]大1}
   
   所求的结果就是 
   result = n - (c - (B[n-1] - B[0]))