SWITCH
题目描述如下:
There are N lights in a line. Given the states (on/off) of the lights, your task is to determine at least how many lights should be switched (from on to off, or from off to on), in order to make the lights on and off alternatively. InputOne line for each testcase.The integer N (1 <= N <= 10000) comes first and is followed by N integers representing the states of the lights ("1" for on and "0" for off).Process to the end-of-file.OutputFor each testcase output a line consists of only the least times of switches.Sample Input3 1 1 13 1 0 1Sample Output10
分析:该题看似简单但却隐藏着陷阱,题目要求寻找的是最少的切换数,故从第二盏灯开始判断处理得出的结论是不一定正确的。通过分析可以发现该题其实只存在两种情况:奇数位置的灯开着或者偶数位置的灯开着。这样可以直观的处理该题:取奇数位置灯开着需要切换灯状态数与偶数位置灯开着需切换灯状态数的较小值。这样的话需要扫描两边灯的状态数组,开销较大。进一步分析,设a为奇数位置的灯开着需要切换的灯数,b为偶数位置灯开着需要切换的灯数。其实a+b=n。这样本题就只需要扫描一遍数组,且进一步优化后存储灯状态的数组也可以省了。具体代码如下:
posts - 12, comments - 1, trackbacks - 0, articles - 1
Copyright © 李东亮