0001 void qWinSum(Queue<int>& A, Rank n, Rank w) { //w<=n 0002 qPreSum(A, n); //先求前缀和 0003 Queue<int> W; W.enqueue(0); //建立窗口 0004 for (Rank i = 1; i < w; i++) //充满窗口 0005 W.enqueue(A.dequeue()); 0006 for (Rank i = w-1; i < n; i++) { //逐项 0007 A.enqueue(A.front() - W.dequeue()); //求差 0008 W.enqueue(A.dequeue()); //滑动窗口 0009 } //for 0010 } //qWinSum, O(n)