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

  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008