- 注册时间
- 2008-2-6
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 51573
- 在线时间
- 小时
|
发表于 2008-8-1 14:12:49
|
显示全部楼层
问题二,得到23个的解- 0: ABCD
- 1: AEFG
- 2: AHIJ
- 3: AKLM
- 4: ANOP
- 5: AQRS
- 6: BEHK
- 7: BFIL
- 8: BGJM
- 9: BNQT
- 10: CEIM
- 11: CFHN
- 12: CGKO
- 13: CJLP
- 14: DEJN
- 15: DFKP
- 16: DGHL
- 17: DIOQ
- 18: DMRT
- 19: ELOR
- 20: EPST
- 21: FJOS
- 22: GINR
- 23: HMPQ
复制代码- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #define max 256
- char Result[max][5];
- char CH[21] = "ABCDEFGHIJKLMNOPQRST";
- char TEMP[5];
- int m = 0;
-
- void init(void)
- {
- int i;
- for (i = 0; i < max; i ++)
- Result[i][5] = '\0';
- TEMP[5] = '\0';
- }
-
- void Circle(int level, int position)
- {
- int i, j, k, l;
- int bool;
- int sum;
- char c;
- if (level == 4)
- {
- printf("%d: ", m);
- for (i = 0; i < 4; i ++)
- {
- Result[m][i] = TEMP[i];
- printf("%c", TEMP[i]);
- }
- m ++;
- printf("\n");
- }
- else
- {
- if (position < 20)
- for (i = position; i < 20; i ++)
- {
- TEMP[level] = CH[i];
- bool = 1;
- if (level > 0)
- for (l = 0; l < level; l ++)
- if (bool == 1)
- if (TEMP[l] == TEMP[level])
- bool = 0;
- if (bool == 1)
- {
- if (m > 0)
- {
- bool = 1;
- for (j = 0; j < m; j ++)
- if (bool == 1)
- {
- sum = 0;
- for (l = 0; l <= level; l ++)
- if (strchr(Result[j], TEMP[l]) != NULL)
- sum ++;
- if (sum > 1)
- bool = 0;
- }
- if (bool == 1)
- Circle(level + 1, position + 1);
- }
- else
- Circle(level + 1, position + 1);
- }
- }
- }
- }
-
- int main(void)
- {
- int i, j, k, l, m, n;
- char c;
- int bool;
- init();
- Circle(0, 0);
- }
复制代码 |
|