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

  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • Jay Will

    Jay Will

    19 NİSAN 2006
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009