一:题目 Come 宝 !!!


输入格式:
第一行符号个数n

输出格式:
符合要求的三角形个数

输入样例:

4

结尾无空行
输出样例:

6

二:思路

思路:
1.如果我们确立的第一行的符号是什么 ,那么我们就可以基本上确定我们的符号三角形是什么
因为当第一行确定的时候,那么接下来的行就是按照同号为’+’ ,异号为’-’,来填写
2.在这里我们选择的解的空间是子集树(因为我们树每次要么是’-’,要么就是’+’)

3.具体步骤
1>:递归函数的参数
backtacking()

2>:输出的 结果
vector<vector > ans;用来存每次的可行解
vector path; 用来记录一次的可行解

3>:横向单层for循环 和 纵向的递归
横向的单层for循环为 0 和 1(这里我们用0和1代表’+‘和’-’)
纵向的递归为我们的n层结构

4>:递归终止条件为path.size() == n

4.当我们求出所有的可行解,我们要对其做出处理,因为我们只是穷举了第一行的所有数据
所以我们的得补充完整个二维矩阵的样子,那么我们补充的原则是,2个同号下面都是“+”,2个异号下面都是“-”。

5.当得到一个完整的图形后我们要判断 0 和 1的个数时候相等 ,如果相等则计数,就是符合要求的
符号三角形

6:图示例

三:上码


/**思路:1.如果我们确立的第一行的符号是什么 ,那么我们就可以基本上确定我们的符号三角形是什么因为当第一行确定的时候,那么接下来的行就是按照同号为'+' ,异号为'-',来填写 2.在这里我们选择的解的空间是子集树(因为我们树每次都是'-',要么是'-')3.具体步骤1>:递归函数的参数backtacking()2>:输出的 结果vector<vector<string> > ans;用来存每次的可行解vector<int> path; 用来记录一次的可行解  3>:横向单层for循环    和 纵向的递归横向的单层for循环为 0 和 1(这里我们用0和1代表'+'和'-')纵向的递归为我们的n层结构 4>:递归终止条件为path.size() == n4.当我们求出所有的可行解,我们要对其做出处理,因为我们只是穷举了第一行的所有数据所以我们的得补充完整个二维矩阵的样子,那么我们补充的原则是,2个同号下面都是“+”,2个异号下面都是“-”。5.当得到一个完整的图形后我们要判断 0 和 1的个数时候相等 ,如果相等则计数,就是符合要求的符号三角形
**/ #include<bits/stdc++.h>
using namespace std;vector<vector<int> > ans;
vector<int> path;
int N;void backtacking(){if (path.size() == N) {ans.push_back(path);return;}for (int i = 0; i <= 1; i++) {path.push_back(i);backtacking();path.pop_back();}
}
int main(){int count = 0;cin >> N;backtacking();for (int i = 0; i < ans.size(); i++) {int array[N][N];//将每一次的可行解建立一个二维矩阵 memset(array, -1, sizeof(array));//初始化为-1; for (int j = 0; j < N; j++) {array[0][j] = ans[i][j];}for (int k1 = 1; k1 < N; k1++) {for (int k2 = 0; k2 < N - k1; k2++) {// N - k1 :因为这里是逐层递减的 if (array[k1-1][k2] == array[k1-1][k2+1]) {  //上一行的符号相同 array[k1][k2] = 0;  //这里我们用0和1代表'+'和'-'}else{array[k1][k2] = 1;}}}int cnt1 = 0;int cnt2 = 0;for (int k3 = 0; k3 < N; k3++) {for (int k4 = 0; k4 < N; k4++) {if (array[k3][k4] == 0) {cnt1++;}if (array[k3][k4] == 1){cnt2++;}//    cout << array[k3][k4] << ' '; }                         //    cout << endl;}if (cnt1 == cnt2) {count++;}//  cout << endl;}        cout << count;
}

宝!!!我再唠叨一句 记得 加油哟!!!!! 冲!!!!!!!!!!!!!!!!!!!!!

7-3 符号三角形 (10 分)(思路+详解)相关推荐

  1. 10-4 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格 (10 分)思路+详解+测试用例

    前言:测试用表 贴心杰将这个测试表分享给大家 ,如果大家做题的时候发现那个点过不去,一定不要直接看别人的博客,先自己测试用例,如果思路也对 ,验证数据也对,还有错误 你再看看别人的思路!!! CREA ...

  2. 7-8 数字三角形 (31 分)(思路+详解+动态规划)Come Baby!!!!!!!!!!!

    一:题目 观察下面的数字金字塔.写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以从当前点走到左下方的点也可以到达右下方的点. 在上面的样例中,从13到8到26到15到2 ...

  3. 7-1 装载问题 (10 分)(思路+详解)

    一:题目 Come 宝宝!! 输出格式: 输出所有可行的方案数量 输入样例1: 3 50 50 10 40 40 结尾无空行 输出样例1: 4 结尾无空行 输入样例2: 3 50 50 20 40 4 ...

  4. 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come

    一:前言 本题需要用到并查集的知识,建议先学完并查集后再看看本题 二:题目 题目给出一个无向连通图,要求求出其最小生成树的权值. 温馨提示:本题请使用kruskal最小生成树算法. 输入格式: 第一行 ...

  5. 7-6 区间覆盖 (10 分)(思路+详解)Come 宝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    一:题目 设 x 1 ​ ,x 2 ​ ,-,x n ​ 是实直线上的n个点.用固定长度的闭区间覆盖这n个点,至少需要多少个这样的固定长度闭区间? 输入格式: 第1行有2个正整数n(n<50)和 ...

  6. 7-2 单源最短路径 (10 分)(思路+详解+邻接表做法)Come Brather!!!!!!!!!!

    一:前言 本次题解先展示用邻接矩阵做的,但其会出现内存超限,因为确实是临界矩阵在数据很大的时候相比临界表是耗内存的,但是以前习惯用临界矩阵了,所以一上来就用临界矩阵做了,后来上网查了后知道邻接矩阵会内 ...

  7. 7-5 流水作业调度 (10 分)(思路+详解+johnson解析)Come Baby!!!!!!!!!!

    一:题目 n个作业{1,2,-,n}要在由2台机器M1和M2组成的流水线上完成加工.每个作业加工的顺序都是先在M1上加工,然后在M2上加工.M1和M2加工作业i所需的时间分别为ai和bi.流水作业调度 ...

  8. 7-3 凸多边形最优三角剖分 (10 分)(思路+详解+分析题意+动态规划)Come Baby!!!!!!!!!

    一:题目: 给定n边凸多边形P,要求确定该凸多边形的三角剖分(将多边形分割成n-2个三角形),使得该三角剖分中诸三角形上权之和为最小.各边弦的权值以由输入数据给出,以无向图的形式表示.三角形的权值等于 ...

  9. 7-1 字母统计图 (10 分)(思路+详解)

    一:题目 摆放在面前的是一小段英文文章. afeng希望你能帮他统计一下每个小写字母出现的次数. 最后再以柱状图的形式(参照输出样例)输出出来. 输入格式: 输入第一行为一个正整数N(N<=10 ...

最新文章

  1. LeetCode实战:最长回文子串
  2. tga文件怎么打开_六安软件定制文件打开的时候乱码怎么解决?
  3. leetcode算法第四题
  4. spring-声明式事务管理
  5. helm3 helm-push插件安装及基本使用
  6. java递归实现 堆的删除_java 递归实现删除或查询指定目录下的全部文件
  7. postMessage跨域、跨iframe窗口消息传递
  8. 千兆交换机下面可以接多少层交换机_高清监控怎么选配交换机
  9. 循环序列模型 —— 1.7 对新序列采样
  10. Python实现从url中提取域名的几种方法
  11. wordpress静态文件加速,整合CDN
  12. matlab中edge函数,matlabedge函数用法
  13. 深度强化学习——A3C
  14. “鲁班”画海报、“小蜜”当客服,“菜鸟”管物流……,双十一阿里黑科技知多少...
  15. vue项目中,使用mint-ui的picker实现省市区三级联动,并且编辑时选中默认值(封装成独立的组件)
  16. 开发Android应用赚钱
  17. 二叉树遍历 递归/非递归/morris
  18. 18938 汉诺塔问题
  19. Word 2019 自带公式快速编号方法
  20. PS填充、仿制图章和修补工具

热门文章

  1. 【ArcGIS Pro微课1000例】0006:ArcGIS Pro 2.5三维显示DEM数字高程模型
  2. Chrome浏览器常见问题及解决方案集锦
  3. Java连接SQL Server类MyDBase的实现
  4. Android之jni编译报错comparsion between signed and unsigned integer expressions解决办法
  5. 栈和队列之生成窗口最大值数组
  6. 安卓模拟器获取服务器信息出错,安卓模拟器客户端与服务器不同步
  7. 熊吃人该不该杀?这头3米高的大熊吃了7个人,还在洞里藏了很多女人用的东西.........
  8. 数学思维比数学运算更重要
  9. mysql 导入文件夹_MySQL-导入与导出
  10. office 高效办公智慧树_干货高效实用的office办公小技巧之word篇