题面:
翻译:
农夫有N头奶牛在训练踢球,他们站成一排,位置分别是x1,x2…xn(xi越大,位置越靠右).
每当一头奶牛接到一个球后,他会传给和他距离最短的奶牛
如果有两头奶牛和他距离相同,那么他就会传给左边的奶牛.
农夫要发多少个球,才能使所有的奶牛都至少能够碰到一次球.
输入:
第一行是一个整数n,代表有多少头奶牛
第二行是n个整数,分别代表n头奶牛的位置.
输出:
一个整数,农夫至少需要发多少个球?
题目分析:
在输入了所有奶牛的位置之后,我们先把他们从左到右排序,以方便之后的处理.
之后我们知道,最左边的奶牛一定会传给他右边的那一头奶牛.
最右边的奶牛一定会传给他左边的那一头奶牛.
然后在判断从左到右的第二到倒数第二头奶牛分别会把球传给谁?然后用一个变量to来记录
同时用一个变量from记录下每一头奶牛能够收到多少头奶牛传给他的球.
这样处理之后,开始传球.
用一个数组shuted来记录每一头奶牛是否碰到过球.
从左到右找到每一头from为0并且没有碰过球的奶牛,给他传一个球,然后再让他继续传下去,标记每一个碰到球的奶牛.
按照以上的方法传完一遍之后,从左到右找到所有仍然没有碰过球的奶牛,给他们传一个球,再然他们一直传下去.标记每一个碰到球的奶牛.
这样就可以得到要传多少个球.