- UID
- 153
- 帖子
- 2398
- 积分
- 34637
- 阅读权限
- 80
- 注册时间
- 2005-7-9
- 最后登录
- 2015-6-19
- 在线时间
- 6842 小时
|
9楼代码
- #include <StdAfx.h>
- #include <iostream>
- using namespace std;
- #define target 20
- #define len 19
- int num[len] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
- int times[len] = {0};
- FILE * f;
- void fun(int sum, int start)
- {
- if(sum == target)
- {
- int i = 0;
- int b;
- for(; i < len; ++i)
- {
- for(int j = 0; j < times[i]; ++j)
- {
- b = i;
- fprintf(f, "%d = %d", target, num[i]);
- times[b]--;
- goto st2;
- }
- }
- st2:
- for(; i < len; ++i)
- {
- for(int j = 0; j < times[i]; ++j)
- fprintf(f, " + %d", num[i]);
- }
- times[b]++;
- fprintf(f, "\r\n");
- }
- for(int i = start; i < len; ++i)
- {
- if(num[i] + sum <= target)
- {
- times[i]++;
- fun(sum + num[i], i);
- times[i]--;
- }
- }
- }
- void main(void)
- {
- f = fopen("d:\\desktop\\bbb.txt", "wb");
- fun(0, 0);
- system("pause");
- }
复制代码 11楼代码
- #include <StdAfx.h>
- #include <iostream>
- using namespace std;
- int num[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
- #define len 19
- #define target 20
- void fun(int sum, int start)
- {
- if(sum == target)
- {
- int i = 0;
- for(; i < len; ++i)
- {
- if(num[i] < 0)
- {
- printf("%d = %d", target, -num[i++]);
- break;
- }
- }
- for(; i < len; ++i)
- {
- if(num[i] < 0)
- {
- printf(" + %d", -num[i]);
- }
- }
- printf("\r\n");
- }
- for(int i = start; i < len; ++i)
- {
- if(num[i] > 0 && num[i] + sum <= target)
- {
- num[i] *= -1;
- fun(sum - num[i], i + 1);
- num[i] *= -1;
- }
- }
- }
- void main(void)
- {
- fun(0);
- system("pause");
- }
复制代码 |
|