Manipulacja wektora 01010101...

0

witam,

potrzebuje szybki sposob (da sie to 1 petla for zalatwic ?) na wygenerowanie nastepujacych wektorow.

dany wjesciowy wektor zero-jedynkowy:

01010101010101....

wyjscia maja byc nastepujace w kolejnosci
00110011001100....
0000111100001111...
0000000011111111...
....

oczywiscie dlugosci wektorow pozostaja takie same, jak tego wejsciowego.

jakies pomysly ?

0

Hmm… Taki trochę pseudokod:

const int SIZE = input.size();
int subseqSize = 1;
boolean value = true;
while (subseqSize < SIZE / 2) {
    for (int i = 0; i < SIZE; ++i) {
        if (i % subseqSize == 0)
            value = !value;
        output[i] = value;
    }
    subseqSize *= 2;
}

W każdym przebiegu pętki while wygeneruje się wektor, kolejno:

010101010101010101010101…
001100110011001100110011…
000011110000111100001111…
000000001111111100000000…
000000000000000011111111…
0
string s="010101010101010";
unsigned size=s.length();
for(unsigned i=0;i<size;++i)
  {
   for(unsigned p=size-1;p<size;--p) s[p]=s[p>>1];
   cout<<s<<endl;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1