2011-11-25 19 views
32

Podczas rozwiązywania problemu z geometrią natrafiłem na podejście o nazwie Algorytm okna przesuwnego.Co to jest algorytm przesuwnego okna? Przykłady?

Nie można znaleźć żadnych materiałów/informacji na ten temat.

O czym jest algorytm?

+2

Czy mówisz o [tego rodzaju oknach] (http://en.wikipedia.org/wiki/Window_function)? Nie widzę linku z geometrią. –

+0

Wyjaśnienie połączenia nie będzie możliwe, chyba że opisujesz problem z geometrią. –

Odpowiedz

66

Zasadniczo przesuwne okno jest podlistą, która przebiega nad kolekcją leżącą u podstaw. To znaczy, jeśli masz tablicę jak

[a b c d e f g h] 

przesuwne okno o rozmiarze 3 będzie działać na nim jak

[a b c] 
    [b c d] 
    [c d e] 
     [d e f] 
     [e f g] 
      [f g h] 

Jest to przydatne, jeśli na przykład chcemy obliczyć średnią działa, lub jeśli chcesz utworzyć zestaw wszystkich sąsiednich par itp.

1

To jest kod protokołu przesuwanego okna dla tablicy o rozmiarze n, gdzie suma liczb k jest przechowywana razem w innej sumie tablicowej. Poniższy kod znajduje się w Javie .

import java.io.*; 
class deva 
{ 
    public static void main(String args[])throws IOException 
    { 
     BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); 
     int n=Integer.parseInt(in.readLine()); 
     int[] a = new int[n]; 
     for(int i=0;i<n;i++) 
     a[i]=Integer.parseInt(in.readLine()); 
     int k=Integer.parseInt(in.readLine()); 
     int[] sum = new int[n-k+1]; 
     for(int i=0;i<k;i++) 
     sum[0]+=a[i]; 
     System.out.println(sum[0]); 
     for(int i=1;i<n-k+1;i++) 
     { 
     sum[i]=sum[i-1]+a[i+k-1]-a[i-1]; 
     System.out.println(sum[i]); 
     } 
    } 
} 
+2

podczas gdy jest to interesujące, to nie robi nic, aby * wyjaśnić * informacje, o które prosił OP. – Martin

+1

... a kod jest okropny. – Gabriel