第5章 回溯法,符号三角形问题

算法设计_回溯法_符号三角形问题 c++程序: #include"iostream" using namespace std ; //声明一个类 //用回溯法解符号三角形问题时,可以用完全二叉树表示其解空间。 //这个问题是给定的n,计算有多少个符号三角形,使其所含的“+”和"-"的个数相同. class Triangle { private : int n ; //第一行的符号个数 阅读详情
#include <iostream>
#include <cstdio>

using namespace std;

#define MAXSIZE 21

int n;								//第一行符号个数
int signTriangle[MAXSIZE][MAXSIZE];	//符号三角形矩阵,矩阵最左侧一列不用
int count;							//满足条件的符号三角形个数
int half;							//符号总数的一半
int amount;							//符号总数

int Count(int k, int count)
{
	//printf("sign[%d] %d ", k, signTriangle[0][k]);
	int i, j;
	for (i = 0, j = k; i < k; i++, j--)
	{
		count += signTriangle[i][j];
		if (signTriangle[i][j-1] == signTriangle[i][j])
		{
			signTriangle[i+1][j-1] = 1;
		}
		else
		{
			signTriangle[i+1][j-1] = 0;
		}
	}
	//printf("number of plus signs: %d\n", count);
	return count;
}

void Backtrack(int k, int plusSigns)
{
	if (k > n)
	{
		count++;
		//printf("%d %d\n", plusSigns, count);
	}
	else
	{
		int i;
		for (i = 0; i < 2; i++) //i为0代表减号,为1代表加号
		{
			signTriangle[0][k] = i;
			//统计新增最右侧一条边后,加号的数量
			int temp = Count(k, plusSigns);
			//加号和减号的数量均不能超过总符号数的一半
			if (temp <= half && (k*(k+1))/2 - temp <= half)
			{
				Backtrack(k+1, temp);
			}
		}
	}
}

int main(void)
{
	while (scanf("%d", &n) != EOF)
	{
		count = 0;
		amount = n*(n+1) / 2;
		//printf("amount: %d\n", amount);
		if (amount % 2 == 0)
		{
			half = amount / 2;
			Backtrack(1, 0);
		}
		printf("%d\n", count);
	}
	return 0;
}

符号三角形问题-回溯法 貌似是子集树问题 问题描述:   由14个“+”号和14个“-”号组成的符号三角形。   2个同号下面是“+”号,2个异号下面是“-”号。 在一般情况下,符号三角形第一行有N个符号,该问题要求对于给定n计算有多少种不同的符号三角形。使其所含的+  — 个数相同。 算法设计:   1 x[i] =1 时,符号三角形的第一行的第i个符号为+   阅读详情

相关推荐

符号三角形问题(回溯)

算法设计例题:符号三角形问题(回溯) memory limit: 5000KB    time limit: 20000MS accept: 5    submit: 8 Description 符号三角形问题要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同。 在一般情况下,符号三角形的第一行有n个符号。如图所示是由14个“+”号和1

Riak, Spark, Golang, Erlang, 云存储, 云计算, 数据挖掘 1235

符号三角形问题

文章引用:题目描述。

2201_75567880的博客 168

符号三角形问题.txt

输入:n (1<n<=27). 输出不同方案的个数. 注意:纯打表必和谐掉,不信就试试;有限打表,你懂的。 测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助 测试用例 1 以文本方式显示 2↵ 3↵ 以文本方式显示 0↵ 4↵ 1秒 64M 0

回溯法之符号三角形问题

问题描述 题目分析 对于符号三角形问题,用n元组x[1:n]表示符号三角形第一行的n个符号,由于我们只有两种符号——"+“或”-",所以取值是一个二值问题,如果取"+“我们就假设x[i]=1,如果取”-“我们就设x[i]=0。所以这显然是一个解空间为子集树的问题。我们不需要每次都遍历到树的叶节点,可以通过剪枝来节约时间。 明确了解空间以后,我们要确定的就是约束函数。由于”+“和”-“数目相同,且...

weixin_44755413的博客 1万+

回溯算法解决+ -符号三角问题的实验研究

用回溯法解决以下问题,下图是由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-”。

从零到一:龙芯杯参赛全攻略(含北理工学长经验PDF、B站培训视频与开源代码合集)

本文详细介绍了龙芯杯全国大学生计算机系统能力大赛的参赛全攻略,包括资源整合、技能树构建、团队协作和避坑指南。提供北理工学长经验PDF、B站培训视频与开源代码合集,帮助参赛者从零基础到站上领奖台。重点解析如何高效获取优质资源、避开新手常见陷阱及构建可落地的学习路径,助力普通学生系统学习CPU设计。

weixin_26802933的博客 538

回溯算法之符号三角形问题(思考分析、解决、算法模板)

一、问题描述 在一般情况下,符号三角形第一行有N个符号,该问题要求对于给定n计算有多少种不同的符号三角形。使其所含的+ — 个数相同。 要求:n个符号 有多少个符号三角形(+- 个数相同、符合规则) 二、问题分析 (1)问题关键分析:对于一个符号三角形而言,只要是第一行元素确定了,那么接下来整个符号三角形就确定了。因此,关键在于第一行的元素是怎么排列的?他能决定接下来的+-个数总和。 ...

weixin_42822489的博客 2913

Contest 226 - C - Martial artist

from atcoder Problem Statement Time Limit: 2 sec / Memory Limit: 1024 MB Score :300300points Takahashi is a martial artist. There areNNmoves that a martial artist can learn, called Move11,22,\ldots…,NN. For each1 \leq i \leq N1≤i≤N, it takes...

m0_54674275的博客 1020

【算法导论11】回溯法-符号三角形问题

【11回溯法-符号三角形问题】 问题描述: 给定一个数字n,求出符合符号三角形的三角形个数,符号三角形的定义为: 由+ - 符号构成的倒三角形,同号下方为+,异号下方为-,且+号数量=-号数量的三角形。 问题分析: 1 该三角形每行个数依次递减,所以总数是等差数列,S = (1+n)*n/2。 2 三角形的总数S一定为偶数。 3 正负符号的个数一定为S/2。(可行解) 4 每个部分符号三角形一定满足:正或负符号个数<S/2。(剪枝函数) 算法分析 1 首先,分析如果单纯构成全为+的符号三角形如何用递归

qq_37739859的博客 2972

机械拆装-基于Unity-总体设计

建立一个机械装配的场景

唐小墨同学的博客 2774

深入解析Panfrost驱动:Mali-GPU开源驱动的架构与实现

本文深入解析了Panfrost驱动作为Mali-GPU开源驱动的架构与实现。从诞生背景到硬件架构演进,详细介绍了Panfrost如何突破ARM闭源策略,实现全栈支持。文章还探讨了驱动设计中的关键技术挑战与性能优化策略,为开发者提供了实用的编译部署指南和性能调优方法。

weixin_30790841的博客 552

回溯法--符号三角形(杂记)

回溯法说来简单,写起来难,真的是要愁死。书本例题--符号三角形--回溯法

m0_56147044的博客 1873

滑模控制算法——基本原理(附MATLAB程序)

选择一个滑模面和是设计参数。是滑模面函数,通常我们希望系统状态在的面上滑动。我们以一个简单的二阶系统作为示例,其状态空间方程为:是系统矩阵是输入矩阵是输出矩阵假设我们的系统如下:滑模控制算法的核心在于设计合适的滑模面和控制律,并分析系统在滑模面上的稳定性。通过上述公式和步骤,可以有效地设计滑模控制器,以处理具有非线性和不确定性的动态系统。总的来说,滑模控制算法因其鲁棒性和灵活性在处理复杂控制问题中表现出色,但在实际应用中需要精心设计以克服抖振现象和其他潜在问题。BuxuABDC。

qq_35623594的博客 2万+

打印符号三角形问题java_回溯法之符号三角形问题

问题描述:由14个“+”号和14个“-”号组成的符号三角形。2个同号下面是“+”号,2个异号下面是“-”号。如图:+   +  _   +  _   +   ++  _   _   _  _  +_  +  +  +  __  +  + __  + __ _+在一般情况下,符号三角形第一行有N个符号,该问题要求对于给定n计算有多少种不同的符号三角形。使其所含的+ — 个数相...

weixin_39941732的博客 454

告别定位不准!Inner-IoU助力YOLOv11边界框回归精度飙升

Inner-IoU 凭借辅助边框的创新设计,成功解决了传统 IoU 损失在小目标、遮挡场景下的收敛难题,为 YOLOv11 注入了更强的定位能力。从原理剖析到代码集成,本教程已为你铺就了一条“精度提升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“精度优异”的答卷——相信我,当你看到检测框精准贴合目标的那一刻,你会明白这份尝试的价值。

FJN110的博客 190

YOLOv13改进:注意力机制 | 动态稀疏注意力的双层路由方法BiLevelRoutingAttention | CVPR2023

BiLevelRoutingAttention方法对小目标检测效果比较好。可能是因为BRA模块是基于稀疏采样而不是下采样,一来可以保留细粒度的细节信息,二来同样可以达到节省计算量的目的。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1434

回溯法解符号三角形问题

  /*回溯法解符号三角形问题问题描述:如下图是由14个“+”和14个“-”组成的符号三角形, 2个同号下面都是“+”,2个异号下面都是“-”。- + + - + + + - + - - + + - - + - + + - - - - + + - + -在一般情况下,符号三角形的第一行有n个符号, 符号三

shellching的专栏 7077

STM32cubeMX配置FreeRTOS软件定时器

文章目录前言1.软件定时器概述一.软件定时器特性二、使用cubeMX生成软件定时器总结 前言 本文主要带大家了解什么是软件定时器,并且带大家使用cubeMX配置软件定时器。 1.软件定时器概述 一.软件定时器特性 软件定时器就是一个闹钟当时间到了就执行相对应的任务或者代码。软件定时器是基于系统滴答中断的。在FreeRTOS中我们可以设置无数个软件定时器。 指定时间:启动定时器和运行回调函数,两者的间隔被称为定时器的周期 (period)。 指定类型定时器有两种类型: 1.一次性 这类定时器启动后,它的回调函

m0_49476241的博客 6949

回溯法--符号三角形问题

问题描述:如下图是由14个“+”和14个“-”组成的符号三角形, 2个同号下面都是“+”,2个异号下面都是“-”。- + + - + + +- + - - + +- - + - ++ - - -- + +- +-在一般情况下,符号三角形的第一行有n个符号, 符号三角形问题要求对于给定的n,计算有多少个不同的符号三角...

a1394774308的博客 504

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

符号三角形问题(Java)

符号三角形问题(Java)

优快云2022博客之星Top39;华为云博主7&,优快云、稀土掘金、微信公众号、阿里云开发者社区、腾讯云社区、博客园、知乎、51CTO同名博主WHYBIGDATA; 1614

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

实验5 回溯法

一、实验目的与要求: 1、通过回溯法的示例程序理解回溯法的基本思想; 2、运用回溯法解决实际问题进一步加深对回溯法的理解和运用; 二、实验内容: 1、分析并掌握“符号三角” 问题的回溯法求解方法; 2、练习使用回溯法求解问题。 三、实验步骤 1.理解回溯算法思想和算法示例; 2.上机输入和调试算法示例程序; 3.理解实验题的问题要求; 4.上机输入和调试自己所编的实验题程序; 5.验证并分析实验题的实验结果; 6.整理出实验报告; 四、示例程序:符号三角形问题 符号三角问题:下面都是“-”。 下图是由14

Chenghuan's learning blog 841

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

算法设计与分析第5章 回溯法(二)【回溯法应用】

第5章 回溯法 5.2 应用范例 1.0-1背包问题 有n件物品和一个容量为c的背包。第i件物品的重量是w[i],价值是p[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 ·算法设计: (1)解空间:子集树 (2)算法调用递归函数Backtrack (3)可行性约束函数: (4)上界函数:当前包内物品重量(cw)+物品的选中情况(x[i])*物品的重量(w[i...

ccchenxi的博客 1750
上一篇: 第5章 回溯法,批处理作业调度
下一篇: 第4章 贪心算法,Dijkstra算法(邻接矩阵存储,时间复杂度为O(n^2))
庞老板
博客等级 码龄15年 127粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值