- 论坛徽章:
- 0
|
楼主要是不想用c++的算法库,可以自己用动态规划写一个,算法也很简单
- #include <stdio.h>
- void dp(int *a, int *b, int n)
- {
- int i;
-
- if (n==9) {
- if ((b[0]*10+b[1])*b[2]==(b[3]*10+b[4])
- && (b[3]*10+b[4])+(b[5]*10+b[6])==(b[7]*10+b[8])) {
- printf("(%d%d * %d = %d%d) + %d%d = %d%d",
- b[0], b[1], b[2], b[3] ,b[4], b[5], b[6], b[7], b[8]);
- }
- return ;
- }
-
- for (i=0; i<9; i++) {
- if (a[i] != 0) {
- b[n] = a[i];
- a[i] = 0;
- dp(a, b, n+1);
- a[i] = b[n];
- }
- }
- }
- int main()
- {
- int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
- int b[9];
-
- dp(a, b, 0);
-
- return 0;
- }
复制代码 |
|