//問題描述
/*給定五個整數1,3,9,27,81,這個五個整數可以任意組合進行加減(可以是五個數中的部分相加),這五個數組合進行加減可以得到1~122之間的數, 任意輸入1~122之間的乙個整數,得到其相應的組合,並且按照由大到小的順序輸出其表示式
示例輸入輸出
輸入:5
輸出:9-3-1*/
之前寫過乙個華為上機題,五個數字相加任意組合成1~122之間的數,這幾天看到了,感覺當時寫的方法太挫了,居然是利用多層迴圈,那如果有更多數,或者數字個數不確定,那不就沒轍了。
利用迴圈實現:
對於這個數字任意組合,很容易想到的就是排列組合(輸出n個數字的所有排列)。類似,就可以用回溯的方法來實現。這裡回溯其實也就是直接搜尋,執行過程與利用多層迴圈實質相同,但對於解決問題比多層迴圈的挫辦法要實用得多。
**與求n個數字
#include using namespace std;
int weights[5] = ;
void combine(int n, int sign, int value)
if (sum == value)
cout << weights[j];
}else if (sign[j] == -1)
flag = true;}}
cout << endl;
} }else
}int main()
return 0;
}
C 指標加 減乙個整數
給指標加上乙個整數實際上加的數是這個整數和指標資料型別對應位元組數的乘積。用在陣列中就是對陣列元素的偏移 測試程式 include stdio.h int main int argc,char ar int test num 3 int p test arr printf test arr addr...
對兩個整數進行加 減 乘 除
include int add int a,int b int sub int a,int b int mul int a,int b int div int a,int b void result int p int a,int b 使用函式的指標p作為result函式的形參 main int i...
任意長度的兩個正整數相乘
兩個大數相乘 char multiply char char 給了兩個字串,每個都是代表了乙個很長的10進製表示的數,比如 string str1 23456789009877666555544444 string str2 346587436598437594375943875943875 最後求...