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

  • Day9TV

    Day9TV

    22 NİSAN 2010
  • knopik96

    knopik96

    7 Mayıs 2011
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009