- 最后登录
- 2019-2-15
- 在线时间
- 1 小时
- 阅读权限
- 20
- 注册时间
- 2007-6-3
- 积分
- 214
- 帖子
- 3
- 精华
- 0
- UID
- 9819
- 性别
- 男
- 积分
- 214
- 帖子
- 3
- 精华
- 0
- UID
- 9819
- 性别
- 男
|
/*
1 - 9 数字填入
□ □ □
---- + ---- + ---- = 1
□□ □□ □□
a0 a3 a6
---- + ---- + ---- = 1
a1a2 a4a5 a7a8
a0*a4a5*a7a8 + a3*a1a2*a7a8 + a6*a1a2*a4a5 = a1a2*a4a5*a7a8
*/
void FillNum(int * arr, int index)
{
int i, j;
for (i = 1; i <= 9; i++)
{
for (j=0; j<index; j++)
{
if (arr[j] == i)
break;
}
if (j == index)
{
arr[index] = i;
if (index < 8)
{
FillNum(arr, index+1);
}
else
{
if (arr[0] * (arr[4] * 10 + arr[5]) * (arr[7] * 10 + arr[8]) + arr[3] * (arr[1] * 10 + arr[2]) * (arr[7] * 10 + arr[8])
+ arr[6] * (arr[1] * 10 + arr[2]) * (arr[4] * 10 + arr[5]) == (arr[1] * 10 + arr[2]) * (arr[4] * 10 + arr[5]) * (arr[7] * 10 + arr[8]) )
{
printf("-------------------------------n");
printf(" %2d %2d %2dn", arr[0], arr[3], arr[6]);
printf("---- + ---- + ---- = 1n");
printf("%2d%2d %2d%2d %2d%2dn", arr[1], arr[2], arr[4], arr[5], arr[7], arr[8]);
}
return;
}
}
}
}
void main()
{
int arrNum[9];
FillNum(arrNum, 0);
}
C++写的,递归实现
排列组合的问题,用程序似乎效率都不高,一般都是穷举法 |
|