SORU
4 Aralık 2008, PERŞEMBE


Satır veya sütun 0 varsa, 0 matristeki her bir hücre kümesi

0'lar ve 1'ler ile NxN bir matris verilmiştir. 0 s 0içerir 0 0s içeren her sütun kümesi her satır ayarlayın.

Örneğin

1 0 1 1 0
0 1 1 1 0
1 1 1 1 1
1 0 1 1 1
1 1 1 1 1

sonuçları

0 0 0 0 0
0 0 0 0 0
0 0 1 1 0
0 0 0 0 0
0 0 1 1 0

Microsoft Mühendisi, fazladan bellek, sadece iki boolean değişkenleri ve tek seferde içeren bir çözüm yok, cevap arıyorum, böylece söyledi.

BTW, matrix, bu nedenle sadece 1'ler ve 0'lar matris içinde bekleyin biraz düşünün.

CEVAP
4 Aralık 2008, PERŞEMBE


Tamam, çok yorgunum gibi sabah 3'te burada, ama benim ilk deneyin yerinde tam 2 geçer her sayı matrisi, yani O(NxN) ve doğrusal boyutu, matris.

1. tek satır/sütun nerede olduğunu bilmek işaretleri olarak 1rst sütun ve ilk satır kullanıyorum. O zaman, eğer 1rst satır/sütun 1 de ise tüm hatırlamak 2 değişkenler l ve c vardır. Bu yüzden ilk geçiş işaretleri ayarlar ve 0'lar gerisini sıfırlar.

İkinci geçiş satırlar ve sütunlar 1 ve sıfırlar 1 satır/sütun B ve c olarak işaretlenmiş yerlerde 1 ayarlar.

Sonunda başlangıçta kareler kareler bağlı olarak 1 seferde bitirebilirim şiddetle şüpheliyim. Belki 2 kartım daha verimli... yapılabilir

import pprint

m = [[1, 0, 1, 1, 0],
     [0, 1, 1, 1, 0],
     [1, 1, 1, 1, 1],
     [1, 0, 1, 1, 1],
     [1, 1, 1, 1, 1]]



N = len(m)

### pass 1

# 1 rst line/column
c = 1
for i in range(N):
    c &= m[i][0]

l = 1
for i in range(1,N):
    l &= m[0][i]


# other line/cols
# use line1, col1 to keep only those with 1
for i in range(1,N):
    for j in range(1,N):
        if m[i][j] == 0:
            m[0][j] = 0
            m[i][0] = 0
        else:
            m[i][j] = 0

### pass 2

# if line1 and col1 are ones: it is 1
for i in range(1,N):
    for j in range(1,N):
        if m[i][0] & m[0][j]:
            m[i][j] = 1

# 1rst row and col: reset if 0
if l == 0:
    for i in range(N):
        m [i][0] = 0

if c == 0:
    for j in range(1,N):
        m [0][j] = 0


pprint.pprint(m)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • Plugable

    Plugable

    19 Mayıs 2010
  • Trulia

    Trulia

    29 Kasım 2006