+-
我有一个矩阵,我试图通过将第一行向左移动n次直到其原始位置来“计数”,这时我将第二行向左移动一次,然后再次遍历整个第一行,一次移动第二行,依此类推,直到第二行到达其原始位置,这时第三行将移动一次,然后我们重新开始。
例如:
0 1 2 1 2 0 2 0 1 0 1 2 1 2 0 2 0 1 a few 0 1 2 1 2 0
0 1 2 ==> 0 1 2 ==> 0 1 2 ==> 1 2 0 ==> 1 2 0 ==> 1 2 0 ==> ==> ==> 0 1 2 ==> 0 1 2 ... ... ...
0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 more 1 2 0 1 2 0
一直到达到所有可能的组合。在MxN矩阵中,这应该给我N ^ M个可能性。我正在使用的实际矩阵比该矩阵大得多,因此我尝试避免250个以上的嵌套循环。
我已经有了shift方法:
static inline void shift(uint8_t *row){ //a row from a 2D Array
int a, temp;
int b = sizeof(row);
temp = row[0];
for(a = 0; a < b; a++){
channel[a] = channel[a+1];
}
channel[b] = temp;
}
任何帮助将不胜感激。
0
投票
投票
您的shift()
功能可以通过以下方式改进: