小 B 面前有 nn 个开关,开始时第 ii 个开关的状态是ai
i,其中 ai=1表示第i个开关是开的,ai = 0表示第 i 个开关是关的。现在 小 B 获得了一种魔法,他可以进行若干次操作,每次操作可以选择一个数 x,然后把 x 号开关及其之前的所有开关状态反转(开变关,关变开),请问小 B 最少需要多少次操作才能使所有开关都变为关的状态。
在线等,急!
小 B 面前有 nn 个开关,开始时第 ii 个开关的状态是ai
i,其中 ai=1表示第i个开关是开的,ai = 0表示第 i 个开关是关的。现在 小 B 获得了一种魔法,他可以进行若干次操作,每次操作可以选择一个数 x,然后把 x 号开关及其之前的所有开关状态反转(开变关,关变开),请问小 B 最少需要多少次操作才能使所有开关都变为关的状态。
在线等,急!
递归地解决这个问题,假设函数int getnum(int i,bool open)是递归函数,从最后一个开关开始,如果第n个是开,就返回getnum(n-1,true);如果n是关,f返回getnum(n-1,false)+1,然后就是递归结束条件,i为1的时候。