- 注册时间
- 2008-2-6
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 51573
- 在线时间
- 小时
|
发表于 2013-6-18 16:37:48
|
显示全部楼层
-
- #include <stdio.h>
-
- int mask[10] = {1,0,0,0,0,0,0,0,0,0};
- int next[10][10] =
- {0,0,0,0,0,0,0,0,0,0,
- 5,2,4,5,6,8,0,0,0,0,
- 7,1,3,4,5,6,7,9,0,0,
- 5,2,4,5,6,8,0,0,0,0,
- 7,1,2,3,5,7,8,9,0,0,
- 8,1,2,3,4,6,7,8,9,0,
- 7,1,2,3,5,7,8,9,0,0,
- 5,2,4,5,6,8,0,0,0,0,
- 7,1,3,4,5,6,7,9,0,0,
- 5,2,4,5,6,8,0,0,0,0,
- };
- int counter[10] = {0,0,0,0,0,0,0,0,0,0};
- int graph[10] = {0,0,0,0,0,0,0,0,0,0};
- int nextNumber = 0;
- int graphPostion = 0;
-
- void first( void )
- {
- int i;
- for (i = 1; i <= 9 ; i ++)
- {
- mask[i] = 1;
- graph[graphPostion] = i;
- circle( graphPostion + 1 );
- mask[i] = 0;
- }
- }
-
- void circle( int graphPostion )
- {
- int i;
- int noPostion = 1;
- int n = graph[graphPostion - 1];
- for (i = 1; i <= next[n][0]; i ++)
- {
- if (mask[next[n][i]] == 0)
- {
- noPostion = 0;
- mask[next[n][i]] = 1;
- graph[graphPostion] = next[n][i];
- counter[graphPostion + 1] ++;
- circle( graphPostion + 1 );
- mask[next[n][i]] = 0;
- }
- }
-
- if (noPostion)
- {
- printf("find: ");
- for (i = 0; i < graphPostion; i ++)
- {
- printf("%1d ", graph[i]);
- }
- printf("\n");
- }
- }
-
- int main ( void )
- {
- int i;
- first( );
- for (i = 4; i <= 9; i ++)
- printf("%d: %d\n", i, counter[i]);
- return 0;
- }
复制代码 4: 1400
5: 5328
6: 16032
7: 35328
8: 49536
9: 32256 |
|