符號三角問題

2021-10-02 11:08:51 字數 1459 閱讀 4446

問題描述:

如下三角形:

++-+-++

+----+

-+++-

-++-

-+-

--

+

是由14個「+」號和14個「-」號組成的符號三角形,兩個同號下面都是+號, 兩個異號下面都是-號。在一般情況下,符號三角形的第一行有n個符號。符號三角形問題要求對於給定的n, 計算有多少個不同的符號三角形,使其所含的+的個數和-的個數相同。

使用回溯法解決此問題:

**如下:

#include

#define max_v 100

using

namespace std;

/** * max : 當前 + 的個數

* sum : 已經發現的符合題設的排列個數,即解的個數

* tri : 儲存符號

* i : 當前回溯層次,從0開始

* n : 符號三角形第一行個數

*/void

done

(int max,

int& sum,

int tri[max_v]

[max_v]

,int i,

int n)

//剪枝: 如果提前發現正或負的個數大於總個數的一半,則不用繼續遞迴

if(max > half ||

(i)*

(i +1)

/2- max > half)

//如果 i > n 則說明遞迴結束

if(i >= n)

for(

int a =

0; a <

2; a++

)done

(max + s, sum, tri, i +

1, n);}

}int

main()

執行結果:

符號三角形問題

符號三角形問題 右圖所示的三角形中,有14個 和14個 2個同號下面是 兩個異號下面是 在一般情況下,符號三角形的第一行有n個符號。符號三角形問題,要求對於給定的n,計算有多少個不同的符號三角形,使其所含的 和 相同。解 首先要求產生的 與 的數量一樣多,所以當給定的n不能滿足 n 1 n 4 0的...

符號三角形問題

如下圖是由14個 和14個 組成的符號三角形,2個同號下面都是 2個異號下面都是 1 2 3 4 5 6 7 在一般情況下,符號三角形的第一行有n個符號,符號三角形問題要求對於給定的n,計算有多少個不同的符號三角形,使其所含的 和 的個數相同。這是在書本中回溯裡的一道題目,回溯約等於深度優先搜尋 回...

符號三角形問題

輸入 n 1輸出不同方案的個數.注意 純打表必和諧掉,不信就試試 有限打表,測試輸入 期待的輸出 時間限制 記憶體限制 額外程序 測試用例 1 以文字方式顯示 2 3 以文字方式顯示 0 4 1秒64m 0 include include includeusing namespace std int...