![](/img/trans.png)
[英]csv.writer - How to dynamically write columns in writerow(n1,n2,n3, …nth)?
[英]How do I write O(n2) program of matrix n x n?
我正在练习并尝试编写 O(n^2) 程序来测试 A 中的同一行或同一列是否有两个 1。其中 A = nxn 0 和 1 矩阵。
给定 A 为:
我应该得到 2 场比赛的答案。
一个在第一行,另一个在第三列。
我的第二次尝试:
def testLines():
count = 0
for x in range( 0, len(A)-1 ):
if( (A[x] == 1) & (A[x+1] == 1) ):
count+=1
for y in range( 0, len(A)-1):
if( (A[y] == 1 & A[y+1]) == 1 ):
count+=1
print( count, '1s has been matched in the array A')
testLines()
您想嵌套两个循环并更改索引,以便解析 x 和 y。 目前,您的代码通过 (all x, y = 0) 和 (x = 0, all y) 移动。
A = [[0, 0, 1, 1],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 1, 0]]
def testLines():
count = 0
N = len(A)
for x in range(N):
for y in range(N):
if A[x][y] == 1:
if x+1 < N and A[x+1][y] == 1:
count += 1
if y+1 < N and A[x][y+1] == 1:
count += 1
print(count, '1s has been matched in the array A')
testLines()
或者,您可以 go 施瓦辛格方式而不检查(x+1, y)
或(x, y+1)
是否存在。 这将引发您可以选择忽略的IndexError
。
def testLines():
count = 0
N = len(A)
for x in range(N):
for y in range(N):
try:
if A[x][y] == 1 and A[x+1][y] == 1 or A[x][y+1] == 1:
count += 1
except IndexError:
continue
print(count, '1s has been matched in the array A')
您可以运行一个嵌套循环 (n²) 来获取行的总和。 如果总和为 2,则该行有两个 1。
现在交换行和列(将行视为列,反之亦然)。
再次运行嵌套循环 (n²) 以检查列的总和。
n²+n²= O(n²)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.