2017-10-01 41 views
-3

img這個python代碼中的錯誤在哪裏?

首先舉幾個例子:

Input: 
10 
1 
4 5 6 
Output: 
6 

另一個問題:

Input: 
10 
2 
3 3 3 
7 7 4 
Output: 
4 

我把這段代碼是對某些情況下,正確的,但不是所有的問題出在哪裏?

n = int(input()) 
q = int(input()) 
z = 0 
repeat = 0 
ans = 0 
answ = [] 
arrx = [] 
arry = [] 
for i in range(q): 
    maxi = 0 
    x,y,w = [int(i) for i in input().split()] 
    x,y = x+1, y+1 
    if((arrx.count(x)>=1)): 
     index = arrx.index(x) 
     if(y==arry[index]): 
      if(answ[index]==ans): 
       repeat += answ[index] 
       z = answ[index] 
    arrx.append(x) 
    arry.append(y) 
    if((w>x or w>y) or (w>(n-x) or w>(n-y))): 
     maxi = max(x, y, (n-x), (n-y)) 
    if(((x>=w) or (y>=w)) or (((n-x)>=w) or ((n-y)>=w))): 
     maxi = w 
    ans = max(ans, maxi) 
    answ.append(ans) 
    if(ans>z): 
     repeat = 0 
print(ans+repeat) 

回答

0

我與你的代碼中看到的問題是,你正在處理的數據作爲兩個一維數組,arrxarry,當問題的二維數組調用。您應該能夠打印出您的數據結構並查看火山的熱圖。對於第一個例子,你就在地圖中間的單熱火山:

10 
1 
4 5 6 

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 
[2, 2, 2, 2, 2, 2, 2, 2, 2, 1] 
[2, 3, 3, 3, 3, 3, 3, 3, 2, 1] 
[2, 3, 4, 4, 4, 4, 4, 3, 2, 1] 
[2, 3, 4, 5, 5, 5, 4, 3, 2, 1] 
[2, 3, 4, 5, 6, 5, 4, 3, 2, 1] 
[2, 3, 4, 5, 5, 5, 4, 3, 2, 1] 
[2, 3, 4, 4, 4, 4, 4, 3, 2, 1] 
[2, 3, 3, 3, 3, 3, 3, 3, 2, 1] 
[2, 2, 2, 2, 2, 2, 2, 2, 2, 1] 

哪裏最熱(6)點顯然是一個火山本身。對於第二個例子,你有兩個冷卻器火山:

10 
2 
3 3 3 
3 3 3 
7 7 4 

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
[0, 1, 1, 1, 1, 1, 0, 0, 0, 0] 
[0, 1, 2, 2, 2, 1, 0, 0, 0, 0] 
[0, 1, 2, 3, 2, 1, 0, 0, 0, 0] 
[0, 1, 2, 2, 3, 2, 1, 1, 1, 1] 
[0, 1, 1, 1, 2, 3, 2, 2, 2, 2] 
[0, 0, 0, 0, 1, 2, 3, 3, 3, 2] 
[0, 0, 0, 0, 1, 2, 3, 4, 3, 2] 
[0, 0, 0, 0, 1, 2, 3, 3, 3, 2] 
[0, 0, 0, 0, 1, 2, 2, 2, 2, 2] 

凡熱點要麼是兩個火山或潛在的一些點在他們的重疊是被雙方落在加熱的熱。在這種情況下,重疊點不會比熱的(4)火山熱。但是,如果火山更接近,可能有一個或更多。