/*
Name: 符号三角形问题
Copyright: free
Author: 巧若拙
Date: 20-07-17 10:42
Description: 问题描述:
如下图是由14个“+”和14个“-”组成的符号三角形, 2个同号下面都是“+”,2个异号下面都是“-”。
- + + - + + +
- + - - + +
- - + - +
+ - - -
- + +
- +
-
在一般情况下,符号三角形的第一行有n个符号, 符号三角形问题要求对于给定的n,
计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同。
解题思路:
比较直接的想法是先回溯生成第一行符号的所有可能情况,然后按照规律生成符号三角形,
当某种符号超过总数一半时无解,直接返回。
因为每行符号都只由上一行符号决定,故可以用一维数组代替二维数组
*/
#include<iostream>
#include<cmath>
using namespace std;
const int N = 20; //符号的最大个数
char A[N];//记录符号三角形矩阵的第一行
int sum = 0;//保存可以放置的方案数
int n, half;
void Backtrace(int t); //递归回溯
void Solve();
int main()
{
n = 7;
half = n*(n+1)/2;
if (half%2 == 1)
{
cout << "无解" << endl;
return 0;
}
half /= 2;
Backtrace(0);
cout &
符号三角形问题
最新推荐文章于 2020-01-31 14:11:32 发布