計蒜客 組合表示式

2021-07-30 00:07:26 字數 1006 閱讀 8589

請考慮乙個被空格分隔的,由1到n的整數組成的遞增數列:1 2 3 … n。現在請在數列中插入表示加的「+」,或者表示減「-」,亦或者表示空白的「 」(例如1-2 3就等於1-23),來將每一對數字組合成乙個表示式(第乙個數字前無空格)。計算該表示式的結果並判斷其值是否為0。請你寫乙個程式找出所有產生和為零的長度為n的數列。

輸入為一行,包含乙個整數n(3≤n≤9)。

輸出為所有在每對數字間插入「+」, 「-」, 或 「 」後能得到和為零的數列,並按照字典(ascii碼)序排列。

樣例輸入

7樣例輸出

1+2-3+4-5-6+7

1+2-3-4+5+6-7

1-2 3+4+5+6+7

1-2 3-4 5+6 7

1-2+3+4-5+6-7

1-2-3-4-5+6+7

#include"iostream"

#include"vector"

using

namespace

std;

vector

jj;

int n;

void dfs(int cur,int sum)

if(cur!=n)

int he2=sum+cur;

jj.push_back('+');

jj.push_back(cur+'0');

dfs(cur+1,he2);

jj.pop_back();jj.pop_back();

if(cur!=n)

int he3=sum-cur;

jj.push_back('-');

jj.push_back(cur+'0');

dfs(cur+1,he3);

jj.pop_back();jj.pop_back();

}int main()

return

0;}

dfs,注意題目要求按字典序輸出,其中』 『> 『+』 > 『-『;

計蒜客 組合表示式

請考慮乙個被空格分隔的,由1到n的整數組成的遞增數列 1 2 3 n。現在請在數列中插入表示加的 或者表示減 亦或者表示空白的 例如1 2 3就等於1 23 來將每一對數字組合成乙個表示式 第乙個數字前無空格 計算該表示式的結果並判斷其值是否為0。請你寫乙個程式找出所有產生和為零的長度為n的數列。輸...

計蒜客 表示式 遞迴

鏈結 here 思路 當傳入乙個字串後,給字串中的所有運算子標記優先順序等級,然後選出來優先順序最低的運算子,因為優先順序最低的運算子一定是最後計算,因此就可以將乙個表示式拆分成兩個子表示式,因此這就將大問題轉化為等價的小問題,遞迴解決即可 這道題目中有變數 a 那麼這該如何處理呢 我們可以將 a ...

計蒜客題目 合法分數的組合

輸入乙個自然數n,我們總可以得到一些滿足 1 b n,0 a b 1 條件的最簡分數a b 分子和分母互質的分數 請找出所有滿足條件的分數。比方說,當n 5時,所有解為 0 1 1 5 1 4 1 3 2 5 1 2 3 5 2 3 3 4 4 5 1 1 現在,你需要對於乙個給定的自然數n,1 n...