問題:
序列123...N,N介于3和9之间,在其中加入+、-或者空格,使其和为0。
如123456,1-2 3-4 5+6 7,等价于1-23-45+67=0。
解答:
網上找來的代碼。
1 //序列123...N,N介于3和9之间,在其中加入+、-或者空格,使其和为0, 2 //如123456 1-2 3-4 5+6 7 等价于1-23-45+67=0。请问,如何获得所有组合?使用递归和非递归。 3 //非递归算法 4 #include <iostream> 5 #include <cmath> 6 using namespace std; 7 8 void func (char* str); 9 void calc (char* result); 10 11 int main() 12 { 13 char str[] = "123456789"; 14 func(str); 15 return 0; 16 } 17 18 void func(char* str) 19 { 20 //初始化输出数组 21 int len = strlen(str); 22 char* result = new char[len*2]; 23 for (int i = 0; i < len; i++) { 24 result[i*2] = str[i]; 25 } 26 result[len*2-1] = '