【算法每日一练]-dfs (保姆级教程 篇7 递推和递归)#三角形个数 #字符串斐波那契

目录

三角形个数

字符串斐波那契


        

dfs递归解决问题就是把大问题化成小问题,从小问题开始解决

        

三角形个数

         

反正就是找规律嘛:

先找正三角的个数:

边长为1:1+2+3+4+5+6   (n-1+1)

边长为2:1+2+3+4+5       (n-2+1)

边长为3:1+2+3+4           (n-3+1)

边长为4:1+2+3               (n-4+1)

边长为5:1+2                   (n-5+1)

边长为6:1                       (n-6+1)

(n-i+1)不断等差求和得:(n-i+2)(n-i+1)/2

求倒三角:

边长为1时:0

边长为2时:0+1

边长为3时:0+1+2

边长为4时:0+1+(1+2+3)

边长为5时:0+(1+2)+(1+2+3+4)

边长为6时:0+1+(1+2+3)+(1+2+3+4+5)

可得出f(n)=f(n-2)+n*(n-1)/2

倒三角写dfs的时候注意dfs先更新右边的,然后因为n的奇偶性不确定所以要有两个终止情况,n为1和n为2,一个返回0,一个返回1。

#include <bits/stdc++.h>
using namespace std;
int f(int n){
	if(n==1)return 0;
	if(n==2)return 1;
	return (n-1)*n/2+f(n-2);
}

int main(){
	int n,t;
	cin>>t;
	while(t--){
		cin>>n;
		int sum1=0,sum2=0;
		for(int i=1;i<=n;i++){
			sum1+=(n-i+1)*(n-i+2)/2;	
		}
		sum2=f(n);
		cout<<sum1+sum2<<'\n';
	}
}

        

         

字符串斐波那契

         

没有必要去模拟这个过程,你只需要知道每项字符串的长度就行了,如果说c比这一项长度小,那么c就在这一项中,否则就去另外一项中找

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string s1="IAKIOI";
string s2="WHENWILLSCORLLOFTAIWUCOMEOUT!!!";
ll len[85],n,c;//len存放每项字符串的长度,这个在dfs的时候很有必要
void find(ll n,ll c){
	if(n==0){
		cout<<s1[c-1];return ;
	}
	if(n==1){
		cout<<s2[c-1];return ;
	}
	if(c<=len[n-2])find(n-2,c);//说明在n-2项中,那就去n-2项中找
	else{
		find(n-1,c-len[n-2]);//去n-1项中找,因为丢掉了n-2项,所以下标有所变动
	}
}
int main(){
	cin>>n>>c;
	len[0]=s1.length();
	len[1]=s2.length();
	for(int i=2;i<=n;i++){
		len[i]=len[i-2]+len[i-1];
	}
	find(n,c);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/244686.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SOLIDWORKS Motion运动平台减速运动分析

SOLIDWROKS motion是SOLIDWORKS中一个高性能的插件&#xff0c;能够帮助设计中完成虚拟样机的仿真分析工具&#xff0c;motion既可以对众多的机械结构进行运动学和动力学仿真&#xff0c;同时也可以反馈机械设备的速度、加速度、作用力等&#xff0c;在SOLIDWROKS motion完成样…

Spark分布式内存计算框架

目录 一、Spark简介 &#xff08;一&#xff09;定义 &#xff08;二&#xff09;Spark和MapReduce区别 &#xff08;三&#xff09;Spark历史 &#xff08;四&#xff09;Spark特点 二、Spark生态系统 三、Spark运行架构 &#xff08;一&#xff09;基本概念 &#x…

餐饮业数字化转型的首选——低代码开发方式

2023年全国餐饮消费迎来了强势恢复。3月15日&#xff0c;国家统计局最新发布的数据显示&#xff0c;1—2月份&#xff0c;社会消费品零售总额77067亿元&#xff0c;同比增长3.5%&#xff0c;扭转了2022年10月以来连续三个月下降的趋势&#xff0c;在上年同期较高基数基础上持续…

shell编程-date命令详解(超详细)

前言 date 命令是一个在命令行中使用的用于显示和设置系统时间的工具。它可以显示当前的日期和时间&#xff0c;也可以根据指定的格式来输出日期和时间信息。本文将详细介绍 date 命令的基本语法和常用选项&#xff0c;帮助您更好地理解和使用 date 命令。 一、date命令介绍 …

正则表达式简单易学,急速上手

正则表达式 匹配模式 i&#xff1a;忽略大小写 g&#xff1a;全局匹配 ig&#xff1a;忽略大小写全局匹配 m&#xff1a;执行多行匹配 // 方式一&#xff1a; 创建正则对象 1.正则表达式 2.匹配模式 var reg new RegExp("ab","i"); var str "…

智能科技企业网站搭建的作用是什么

随着科学技术快速提升&#xff0c;各种智能产品随之而来&#xff0c;每个赛道里都涌入了大量企业商家&#xff0c;有些热门产品更是广受关注&#xff0c;对企业来说&#xff0c;形象、品牌、信息等方面需要完美呈现到用户眼前&#xff0c;而网站无疑是很好的工具。 企业通过【…

ubuntu22 安装 cuda12.0

本文是先安装显卡驱动后进行的操作 查看显卡驱动支持CUDA的最新版本12.0 nvidia-smi 检查gcc版本 gcc -v 查看系统支持的gcc版本 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html 选择对应的安装cuda命令 https://developer.nvidia.com/cuda-too…

DOS 系统(命令行)

文章目录 DOS 系统DOS 常用命令DOS 高级命令DOS 批处理命令DOS 应用场景 DOS 系统 操作系统的发展史&#xff08;DOS/Windows篇&#xff09; DOS操作系统的历史 DOS&#xff08;Disk Operating System&#xff09; 是 磁盘操作系统 的缩写&#xff0c;是一种早期的个人计算机操…

zk_dubbo

图灵面试笔记 zk dubbo spi dubbo 文章 dubbo与spring整合之Service、Reference注解处理过程 JAVA备忘录

<蓝桥杯软件赛>零基础备赛20周--第10周--二分

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周&#xff08;读者可以按…

Linux:TCP 序列号简介

文章目录 1. 前言2. 什么是 TCP 序列号&#xff1f;3. TCP 序号 的 初始值设置 和 后续变化过程3.1 三次握手 连接建立 期间 客户端 和 服务端 序号 的 变化过程3.1.1 客户端 socket 初始序号 的 建立3.1.2 服务端 socket 初始序号 的 建立3.1.3 客户端 socket 接收 服务端 SAC…

平台工程与 DevOps 和 SRE 有何不同?

在现代软件开发和运营的动态领域中 &#xff0c;平台工程、DevOps 和站点可靠性工程 (SRE) 等术语 经常使用&#xff0c;有时可以互换使用&#xff0c;这常常会导致进入或浏览这些领域的专业人员感到困惑。了解这些概念之间的细微差别对于努力构建强大且可扩展的系统的组织至关…

Vue3-12- 【v-for】循环一个整数

说明 v-for 这个东西就很神奇&#xff0c;可以直接循环一个整数&#xff0c;而且循环的初始值是从1 开始。使用案例 <template><div v-for"(num,indexB) in 6" :key"indexB">【索引 {{ indexB }}】 - 【数字 {{ num }}】 </div></t…

ArkTS入门

代码结构分析 struct Index{ } 「自定义组件&#xff1a;可复用的UI单元」 xxx 「装饰器&#xff1a;用来装饰类结构、方法、变量」 Entry 标记当前组件是入口组件&#xff08;该组件可被独立访问&#xff0c;通俗来讲&#xff1a;它自己就是一个页面&#xff09;Component 用…

影响云渲染质量的几大要素是什么?影响云渲染质量的主要原因有?

对于3D渲染从业者而言&#xff0c;实现高效和高质量的渲染是一个常见的挑战。由于三维场景的复杂性&#xff0c;相关计算和处理通常需要大量的计算能力和存储&#xff0c;尤其是当面对着高分辨率图像、详细的动画或全局光照效果等要求时&#xff0c;渲染时间往往会大幅增加。针…

Vue 详细教程

Vue实战 1. Vue 引言 渐进式 JavaScript 框架 --摘自官网 官网地址&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js # 渐进式 1. 易用 html css javascript 2. 高效 开发前端页面 非常高效 3. 灵活 开发灵活 多样性 # 总结 Vue 是一个javascript 框架 js 简化页面js操作…

数据挖掘-07-航空公司客户价值分析(包括数据和代码)

文章目录 0. 数据代码下载1. 背景与挖掘目标2. 导入相关库&#xff0c;加载数据2.1客户基本信息分布a. 绘制会员性别比例饼图b. 绘制会员各级别人数条形图c. 绘制年龄分布图 2.2 客户乘机信息分布分析a. 绘制客户飞行次数箱线图b. 绘制客户总飞行公里数箱线图 2.3 客户积分信息…

【二叉树相关问题】

文章目录 一、二叉树的三种遍历方式怎么看遍历结果相关题目&#xff1a;已知一颗二叉树的后续遍历序列为&#xff1a;GFEDCBA;中序遍历序列为&#xff1a;FGAEBDC。画出这棵二叉树思路代码版 二、先序线索树三、二叉树转树、或森林树转二叉树二叉树转树二叉树转森林森林转二叉树…

解析硬盘备份与云备份的差异

​  在数字信息时代&#xff0c;保护您的数据至关重要。外部硬盘驱动器 (HDD) 备份和云备份算是两种流行的数据备份方法。当然&#xff0c;每种方法都有其优点和考虑因素&#xff0c;选择正确的解决方案取决于您的具体需求和偏好。 一、外部硬盘备份 传统的数据备份方法之一是…

Java刷题篇——LeetCode118. 杨辉三角

1.题目描述 给定一个非负整数numRows&#xff0c;生成杨辉三角的前numRows行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例1 输入&#xff1a;numRows 5 输出&#xff1a;[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] 示例2 输入&#xff1a;numRows 1…