要找到兩個一長度所有的排列可以使用遵循簡單的程序:阻塞算法找到固定長度排列
#include <iostream>
using namespace std;
int main(int argc, const char *argv[])
{
int l[] = {0, 1, 2, 3, 4, 5};
const int length = sizeof(l)/sizeof(l[0]);
for(int i = 0; i + 1 < length; i++)
for(int j = i + 1; j < length; j++)
cout << "(" << l[i] << ", " << l[j] << ")" << endl;
return 0;
}
但在我需要這個應用,單品都大了,需要在集合被使用之前被構建。因此,我試圖找到算法,它與阻塞相同。阻止應該讓我有一個銀行可以用於緩存。
下面舉例說明一個(手動)創建了一家銀行的序列,可容納4個項目:
SETS, Cache miss, bank
(0,1) * * 0, 1
(0,2) * 0, 1, 2
(0,3) * 0, 1, 2, 3
(1,2) 0, 1, 2, 3
(1,3) 0, 1, 2, 3
(2,3) 0, 1, 2, 3
(0,4) * 0, 1, 2, 4
(1,4) 0, 1, 2, 4
(2,4) 0, 1, 2, 4
(0,5) * 0, 1, 4, 5
(1,5) 0, 1, 4, 5
(4,5) 0, 1, 4, 5
(2,5) 0, 2, 4, 5
(3,4) * 3, 2, 4, 5
(3,5) 3, 2, 4, 5
任何你是否知道解決這個問題呢?或者你可以指出正確的方向。
- 艾倫
我認爲它不會改變阻塞應該如何表現,但是您想要排列還是組合? – svick 2011-05-01 22:19:28