是這樣的? (與gcc test.c -lm
編譯)
#include <stdio.h>
#include <math.h>
int main(void) {
int i, j;
int n = 4;
int m = (int)pow(2,n);
int p = 5;
for(i = 1; i <= n; i++)
{
for(j = (int)pow(2,i-1); j < ((int)pow(2,i)); j++)
{
if(j == p) {
continue;
}
printf("%d, %d\n", i, j);
// remove vector[j]
if((j == (m-1)) && (m != p)) {
printf("%d, %d\n", i, m);
// remove vector[m]
}
}
}
return 0;
}
運行結果n=3, p=5
:
1, 1
2, 2
2, 3
3, 4
3, 6
3, 7
3, 8
運行結果n=4, p=5
:
1, 1
2, 2
2, 3
3, 4
3, 6
3, 7
4, 8
4, 9
4, 10
4, 11
4, 12
4, 13
4, 14
4, 15
4, 16
我的理解是,這些步驟需要遵循patterm(1,...) (2,..)(2,..)(3,..)(3,..),(3,..)(3,..)(4,..)等等。看到一個數據結構,你實際上'刪除',並尊重現有的刪除。 – greggo
不,這顯然不是問題所要求的。在這個問題中重要的是從元素中刪除元素的方式;打印結果只是問題的一小部分。 –
@greggo你會如何處理它,你能給我一個僞代碼或者你的解決方案的描述嗎? – cristid9