今天遇到一个问题,在写主题板块,共有21个主题类别方块,可以存放主题,但是主题数是<=21的,所以想尽量不让空闲的板块连续,这样看起来以至于板块不那么空闲。
于是想先从奇数中挑选位置,然后再从偶数位置挑选,这样能使空闲板块尽量不连续。
例如:如果有5个板块,3个主题,那么在1,3,5的位置放入主题。
一个小Demo如下:
1: #include <stdio.h>
2:
3: int arrary[21] = {0,0,0};
4:
5: int ChooseAnEmpty()
6: {
7: int j = 0;
8:
9: for(j=1;j<=21;j+=2)
10: {
11: if(arrary[j] == 0)
12: {
13: return j;
14: }
15: }
16:
17: printf("------\n");
18:
19: for(j=2;j<=21;j+=2)
20: {
21: if(arrary[j] == 0)
22: {
23: return j;
24: }
25: }
26:
27: printf("is full\n");
28: return -1;
29: }
30: int main()
31: {
32: int i,pos;
33:
34: for(i = 0; i<23; i++)
35: {
36: pos = ChooseAnEmpty();
37: if(pos == -1)
38: {
39: break;
40: }
41: printf("empty pos = %d\n",pos);
42: arrary[pos] = 1;
43: }
44: }