給定一個陣列,撰寫一個演算法來列印所有可能的子陣列。輸入的第一行包含一個整數 T,表示測驗用例的數量。然后是 T 測驗用例。每個測驗用例都包含一個整數 N,表示陣列 A 的大小。然后在接下來的行中是 N 個空格分隔的值,表示陣列 A。在換行符上列印每個子陣列元素。
t = int(input())
for z in range(t):
n = int(input())
a = list(map(int, input().split()))
for i in range(n):
for j in range(i,n 1):
for k in range(i,j):
print(a[k], end=" ")
print()
樣本輸入
1
3
1 2 3
樣本輸出
1
1 2
1 2 3
2
2 3
3
我已經盡我所能盡力了。
uj5u.com熱心網友回復:
如果您的問題是您有空行,請簡化您的代碼以直接切片串列將所有需要的專案。
默認情況下,您可以使用 unpacking inprint來使用空格分隔的元素。
t = int(input())
for z in range(t):
n = int(input())
a = list(map(int, input().split()))
for i in range(n):
for j in range(i 1,n 1):
print(*a[i:j])
輸入/輸出:
1
3
1 2 3 # end of input
1
1 2
1 2 3
2
2 3
3
uj5u.com熱心網友回復:
而不是你所做的,你可以通過一個簡單而通用的方式,如下所示:
a = input().split()
for i in range(len(a)):
for j in range(len(a)):
if j>=i:
print(*a[i:j 1])
輸出:
1
1 2
1 2 3
2
2 3
3
uj5u.com熱心網友回復:
嘗試以下操作:
t = int(input())
for z in range(t):
n = int(input())
a = []
for y in range(n):
x = int(input())
a.append(x)
for i in range(n):
for j in range(i,n 1):
for k in range(i,j):
print(a[k], end=" ")
print()
uj5u.com熱心網友回復:
(試試這個)您可以通過下一個獲取并列印陣列的所有子集:
在陣列 A 中的每一步,我們對每個元素都有兩個選擇,要么我們可以忽略該元素,要么我們可以將元素包含在我們的子集中。
function
def subsetsUtil(A, subset, index):
print(*subset)
for i in range(index, len(A)):
# include the A[i] in subset.
subset.append(A[i])
# move onto the next element.
subsetsUtil(A, subset, i 1)
# exclude the A[i] from subset and
# triggers backtracking.
subset.pop(-1)
return
下面的函式回傳向量 A 的子集。
def subsets(A):
global res
subset = []
# keeps track of current element in vector A
index = 0
subsetsUtil(A, subset, index)
實作陣列并呼叫函式
array = [1, 2, 3]
subsets(array)
-> res 將存盤所有子集。
時間復雜度
O(2 ^ (number of elements inside array))
--> 因為在每一步我們都有兩個選擇,包括或忽略。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413349.html
標籤:
上一篇:按特定索引合并python串列
