题目描述
blablabla
样例
import copy
a=[[0] for i in range(10) ]
for i in range(4):
a[i]=list(input())
def turn1(x,y):
if a[x][y]=='+':
a[x][y]='-'
else:
a[x][y]='+'
def turn(x,y):
for i in range(4):
turn1(x,i)
turn1(i,y)
turn1(x,y)
def tran(x,y):
idx=4*x+y#对应0到16
return idx
res=[]#存储最小步骤,其长度即为操作次数
for x in range(1<<16):#遍历所有情况
temp=[]#存储步骤,其长度即为操作次数
b=copy.deepcopy(a)#拷贝
for i in range(4):
for j in range(4):
if x>>tran(i,j)&1:
turn(i,j)
temp.append([i+1,j+1])
#判断操作完后是否成立
flag=False
for i in range(4):
for j in range(4):
if a[i][j]=='+':
flag=True
break
if flag==True:
break
#获取最小次数与操作步骤
if not flag:
if not res or len(res)>len(temp):
res=copy.deepcopy(temp)
#把a恢复原样进行下一次遍历
a=copy.deepcopy(b)
print(len(res))
for i in range(len(res)):
print(res[i][0],res[i][1])
算法1
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla