当前位置: 首页 > news >正文

openjudge_2.5基本算法之搜索_2990:符号三角形

题目

2990:符号三角形
总时间限制: 1000ms 内存限制: 65536kB
描述
符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同。

n=7时的1个符号三角形如下:

输入
每行1个正整数n<=24,n=0退出.
输出
n和符号三角形的个数.
样例输入
15
16
19
20
0
样例输出
15 1896
16 5160
19 32757
20 59984

理解

字符串由±符号组成,两两异或运算(±=-,++=+,–=+)得到少一个字符的下一行,一直到一行只有一个字符。
问,最后字符三角形±号数量相同的情况有几种。
1.枚举
3位时加的情况有
+++=000=0
+±=001=1
±+=010=2
±-=011=3
-++=100=4
-±=101=5
–+=110=6
—=111=7
就是0到7对应的二进制,用异或运算得到所有行符号。
3+2+1=6,是偶数,有可能有±符号的数量相同的字符三角形。
但是5+4+3+2+1=15,奇数就不可能±号数相同。
负号或加号数等于3+2+1=6的一半,就是一样。
或者3*(3+1)/4=3也可以。

代码

#include <bits/stdc++.h>
using namespace std;
int x,l,r;
bool k[25][25];
void view(int n,int d){
cout<<d<<“长”<<n<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n-i+1;j++)cout<<k[i][j]<<" “;
cout<<endl;
}
}
int setk(int n,int d){
int he=0;//正号或负号数
for(int i=n;i>=1&&d;i–){//转换成对应二进制
k[1][i]=d%2;//如果是1是就是正号或符号
he+=k[1][i];
d/=2;
}
for(int i=2;i<=n;i++)//第二行开始
for(int j=1;j<=n-i+1;j++){
k[i][j]=k[i-1][j]^k[i-1][j+1];//当前行的正负号
he+=k[i][j];
}
return he;//
}
int main(){
freopen(“data.cpp”,“r”,stdin);
while(cin>>x&&x){
memset(k,0,sizeof(k));
r=0;
for(int i=0;i<x;i++)r+=pow(2,i);//二进制几位全是1时对应的十进制数
int he=0,f;
if((x*(x+1)/2)%2!=1)
for(int d=0;d<=r;d++){
//cout<<d<<endl;
f=setk(x,d);
if(f==x*(x+1)/4){//正号或符号的数时三角形的一半就对
//view(x,d);
he++;
}
}
cout<<x<<” "<<he<<endl;
}
return 0;
}

递归(回溯)

把所有可能数转换成对应二进制有些麻烦。可以用递归回溯。
该位置成1,
递归调用,传递正号或负号数,下位在深一层成1,一直到最后一位下一位。
此时没有字符可以成1,计算下几行,如果正号或负号数等于n*(n+1)/4(n个符号)就多个正负号数一样字符三角形。
递归出口是比字符数多两个。
递归后,回到上一层,刚才成1的字符再变回0,就可以凑出所有的二进制数。也达到了枚举的效果。只是不用每次将整数转换成二进制,只多一层就能多个二进制。

递归(回溯)代码

#include <bits/stdc++.h>
using namespace std;
int x,he;
bool k[25][25];
void go(int n,int f){//n是从几位开始,f是正号或负号数
if(f>x*(x+1)/4)return;//超过一半就作废,剪枝
if(n**>x+1**)return;//超过x位2个数是递归出口
for(int i=n;i<=x;i++){//每次遍历当前位到最后一位
k[1][i]=1;//成1
go(i+1,f+k[1][i]);//递归下一位,而且改变符号数
k[1][i]=0;//恢复
}
for(int i=2;i<=x;i++)//二行开始计算剩下的符号
for(int j=1;j<=x-i+1;j++){
k[i][j]=k[i-1][j]^k[i-1][j+1];
f+=k[i][j];
}
if(f==x*(x+1)/4){//全部n位递归后,如果正负号数相等
he++;
}
}
int main(){
//freopen(“data.cpp”,“r”,stdin);
while(cin>>x&&x){
memset(k,0,sizeof(k));
he=0;
if((x*(x+1)/2)%2!=1)go(1,0);
cout<<x<<" "<<he<<endl;
}
return 0;
}

相关文章:

openjudge_2.5基本算法之搜索_2990:符号三角形

题目 2990:符号三角形 总时间限制: 1000ms 内存限制: 65536kB 描述 符号三角形的第1行有n个由“”和”-“组成的符号 &#xff0c;以后每行符号比上行少1个&#xff0c;2个同号下面是”“&#xff0c;2个异号下面是”-“ 。计算有多少个不同的符号三角形&#xff0c;使其所含”…...

springboot错误

错误总结 1、使用IDEA 的 initialalzer显示2、IDEA 新建文件 没有 java class3、java: 错误: 不支持发行版本 22解决方法4、IDEA-SpringBoot项目yml配置文件不自动提示解决办法 1、使用IDEA 的 initialalzer显示 IDEA创建SpringBoot项目时出现&#xff1a;Initialization fail…...

linux的用户管理

新建用户&#xff1a;1.useradd 2.passwd 完成的操作&#xff1a; (1)/etc/passwd添加一行 (2)/etc/shadow添加一行 (3)/etc/group添加一行 (4)创建用户家目录 (5)创建用户邮件文件 例&#xff1a;创建用户jerry&#xff0c;要求: uid:777&am…...

数美滑块研究

周一&#xff0c;在清晨的阳光照耀下&#xff0c;逆向山脚下的小镇宁静而安详。居民们忙碌地开始一天的生活&#xff0c;而在爬虫镇子的边缘&#xff0c;一座古朴的道观显得格外神秘。 阿羊正静静地坐在青石长凳上&#xff0c;摸鱼养神。突然&#xff0c;一道清脆的声音在他耳…...

【GESP试卷】2024年03月Scratch四级试卷

2024年GESP03月认证Scratch四级试卷 分数&#xff1a;100 题数&#xff1a;27 一、单选题(共15题&#xff0c;每题2分&#xff0c;共30分) 010203040506070809101112131415CDBBACBCDCDADBA 1、小杨的父母最近刚刚给他买了一块华为手表&#xff0c;他说手表上跑的是鸿蒙&…...

每日一题《leetcode--398.随机数索引》

https://leetcode.cn/problems/random-pick-index/ 根据题目所知&#xff0c;所给的数组中有重复的元素。让我们随机输出给定的目标数字的下标索引。 typedef struct {int *sum;int length; } Solution;Solution* solutionCreate(int* nums, int numsSize) {Solution* obj (So…...

【MySQL精通之路】MySQL的使用(9)-设置环境变量

可以在命令提示符下设置环境变量&#xff0c;以影响命令处理器的当前调用&#xff0c;也可以永久设置环境变量以影响未来的调用。 要永久设置变量&#xff0c;可以在启动文件中进行设置&#xff0c;也可以使用系统为此提供的接口进行设置。 有关具体细节&#xff0c;请参阅命…...

JDBC(Java DataBase Connectivity)Java数据库连接

JDBC(Java DataBase Connectivity) Java 语言连接数据库 再本模块中,java提供里一组用于连接数据库的类和接口Java 语言开发者,本身没有提供如何具体连接数据库的功能只是定义了一组java程序连接数据库的访问接口 连接到数据库向数据库发送增,修改,删除这一类的sql发送查询sq…...

1.Redis之初识Redis分布式系统

1.初识Redis 1.1 官网 Redis中文网 Redis 教程 | 菜鸟教程 (runoob.com) 1.2 解释 在内存中存储数据 定义变量,不就是在内存中存储数据嘛?? Redis 是在分布式系统&#xff08;进程的隔离性&#xff1a;Redis 就是基于网络&#xff0c;可以把自己内存中的变量给别的进程…...

基于SpringBoot的网盘系统设计与实现

第1章 绪论... 1 1.1 研究背景与意义... 1 1.1.1 研究背景... 1 1.1.1 研究意义... 1 1.2 国内外研究现状... 2 1.2.1 国内研究现状... 2 1.2.2 国外研究现状... 3 1.3 论文组织架构... 4 第2章 关键技术介绍... 5 2.1 SpringBoot. 5 2.2 MySQL数据库... 5 2.3 MVC架…...

【C++初阶】vector

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…...

elasticsearch 和 RediSerch

elasticsearch 和 RediSerch 前情提要 学习文章来自Docker 安装 ElasticSearch - 知乎 (zhihu.com) docker 安装 docker pull docker.io/elasticsearch:7.1.1启动! docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" b0e9f9f0…...

删除MySQL中所有表的外键

方法一&#xff1a; 原理 查询schema中所有外键名称然后拼接生成删除语句 第一步&#xff1a; SELECT CONCAT(ALTER TABLE ,TABLE_SCHEMA,.,TABLE_NAME, DROP FOREIGN KEY ,CONSTRAINT_NAME, ;) FROM information_schema.TABLE_CONSTRAINTS c WHERE c.TABLE_SCHEMA数据库名…...

webstorm新建vue项目相关问题

前言 这个迭代后端需求偏少&#xff0c;前端code的键盘都起火星子了。来了4个外包支持&#xff0c;1个后端3个前端&#xff0c;还是不够用啊。刚好趁这个机会稍微学习下vue&#xff0c;其实之前环境也配置过了&#xff0c;所以这里就不分享环境配置了&#xff0c;主要分享下新建…...

2024年高考考务人员网上培训参考答案

第1部分&#xff1a;单选题 1. 关于试卷保密室负责人职责&#xff0c;以下说法不正确的是&#xff08;B&#xff09; [2分] A. 负责试卷的接收、保管和发放工作 B. 试卷保密室内屋门锁钥匙和铁柜门锁钥匙必须由同一人保管 C. 试卷接收和发放应当当面清点试卷袋数量&#…...

JavaEE之线程(9) _定时器的实现代码

前言 定时器也是软件开发中的一个重要组件. 类似于一个 “闹钟”。 达到一个设定的时间之后&#xff0c;就执行某个指定好的代码&#xff0c;比如&#xff1a; 在受上述场景中&#xff0c;当客户端发出去请求之后&#xff0c; 就要等待响应&#xff0c;如果服务器迟迟没有响应&…...

纯前端实现将页面数据下载word文档中【包括图片,echarts图,表格,和对话 内容】

亲测真实有效 导出word步骤 在Vue中导出Word文档&#xff0c;可以使用第三方库file-saver和html-docx-js。首先需要安装这两个库&#xff1a; npm install file-saver html-docx-js --save "html-docx-js": "0.3.1","file-saver": "2.0.5…...

JavaSE——类和对象(二)~~封装

目录 一.封装 二.封装扩展之包 三.static成员 四. 代码块 五. 内部类&#xff08;重要&#xff09; 大家好呀&#xff0c;我是北纬&#xff0c;接着上节我们继续讲解Java中关于类和对象的相关知识&#xff0c;今天着重给大家介绍一下关于面向对象程序的特性之一——封装。…...

头歌OpenGauss数据库-I.复杂查询第9关:交换性别

任务描述 本关任务&#xff1a;给定一张 tb_Salary 表&#xff0c;如下所示&#xff0c;有 m 男性 和 f 女性的值。交换所有的 f 和 m 值&#xff08;例如&#xff0c;将所有 f 值更改为 m&#xff0c;反之亦然&#xff09;。 idnamesexsalary1Elonf70002Donnyf80003Careym60…...

冷干机使用中的注意事项

冷干机使用中的注意事项 使用冷干机时&#xff0c;以下是几个注意事项&#xff1a; 安装位置&#xff1a;选择一个通风良好、温度适宜的位置安装冷干机。确保周围环境没有过多的灰尘、腐蚀性气体或其他污染物&#xff0c;以免对冷干机的正常运行和寿命产生不利影响。 电源要求…...

基于开源AI大模型AI智能名片S2B2C商城小程序源码的销售环节数字化实现路径研究

摘要&#xff1a;在数字化浪潮下&#xff0c;企业销售环节的转型升级已成为提升竞争力的核心命题。本文基于清华大学全球产业研究院《中国企业数字化转型研究报告&#xff08;2020&#xff09;》提出的“提升销售率与利润率、打通客户数据、强化营销协同、构建全景用户画像、助…...

MMR-Mamba:基于 Mamba 和空间频率信息融合的多模态 MRI 重建|文献速递-深度学习医疗AI最新文献

Title 题目 MMR-Mamba: Multi-modal MRI reconstruction with Mamba and spatial-frequency information fusion MMR-Mamba&#xff1a;基于 Mamba 和空间频率信息融合的多模态 MRI 重建 01 文献速递介绍 磁共振成像&#xff08;MRI&#xff09;因其无创、无辐射特性以及…...

生成https 证书步骤

一、OpenSSL下载 OpenSSL下载地址&#xff1a; https://slproweb.com/products/Win32OpenSSL.html 如果电脑是64位的就选择64位的 二、OpenSSL安装 双击打开.exe文件 开始安装&#xff0c;一直下一步&#xff0c;不过需要注意的是默认安装路径是C盘&#xff0c;可更改到其他盘…...

SpringAI系列4: Tool Calling 工具调用 【感觉这版本有bug】

前言&#xff1a;在最近发布的 Spring AI 1.0.0.M6 版本中&#xff0c;其中一个重大变化是 Function Calling 被废弃&#xff0c;被 Tool Calling 取代。Tool Calling工具调用&#xff08;也称为函数调用&#xff09;是AI应用中的常见模式&#xff0c;允许模型通过一组API或工具…...

跟单业务并发量分析

虚拟货币交易所中的跟单交易&#xff08;copy trading&#xff09;业务在高峰期的确可能产生较高的并发量&#xff0c;但具体并发量取决于多个因素&#xff0c;包括交易所的规模、用户数量、热门交易员的活跃度、行情波动频率等。 &#x1f4cc; 1. 跟单交易的并发特点 触发集…...

基于51单片机的音乐盒键盘演奏proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1tZCAxQQ7cvyzBfztQpk0UA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C51 是一款常用的 8 位单片机&#xff0c;由 Atmel 公司&#xff08;现已被 Microchip 收…...

【求A类B类月】2022-2-9

缘由编程求解&#xff0c;如内容所示题-Python-CSDN问答只写示例及注释 每月工作日只考虑周末情况&#xff0c;即只有周六、周日放假。每月第一个工作日如果是星期一则该月是A类月&#xff0c;每月最后一个工作日如果是星期五则该月是B类月。一个月可能是A类月也可能是B类月。…...

Python60日基础学习打卡Day39

昨天我们介绍了图像数据的格式以及模型定义的过程&#xff0c;发现和之前结构化数据的略有不同&#xff0c;主要差异体现在2处 模型定义的时候需要展平图像由于数据过大&#xff0c;需要将数据集进行分批次处理&#xff0c;这往往涉及到了dataset和dataloader来规范代码的组织…...

Lauterbach TRACE32专栏

官方培训视频 trace32使用技巧博文 系统崩溃分析 - vmcore 加载到 Trace32 Trace 32 离线 dump 分析环境搭建方法 内核trace分析工具入门 如何用Trace32分析内核死机 trace32调试攻略 TRACE32调试&#xff1a;基础调试技巧之SystemMode、SNOOPer https://cloud.tencent…...

服务器液冷:突破散热瓶颈,驱动算力革命的“冷静”引擎

在人工智能大模型训练、高性能计算和超密集数据中心爆发的时代&#xff0c;CPU/GPU芯片的功耗已突破千瓦大关&#xff0c;传统风冷散热捉襟见肘。液冷技术正从实验室走向数据中心核心&#xff0c;成为解锁更高算力密度的关键钥匙。本文将深度解析液冷技术的原理、方案与应用。 …...