热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DFoldingMachine(dfs)

D-FoldingMachine(dfs)题目链接:https:codeforces.comgym101473attachments题意:长度为n的原始数组a

D - Folding Machine ( dfs )

题目链接:https://codeforces.com/gym/101473/attachments

题意:长度为n的原始数组a,和长度为m的目标数组b,问原始数组a能否通过折叠得到目标数组b。折叠方式如图。

思路&#xff1a;n,m<&#61;15&#xff0c;可以暴力做&#xff0c;每次折叠后肯定会变短&#xff0c;所以最多折叠n-m次&#xff0c;暴力枚举第一次折叠哪个位置&#xff0c;第二次折叠哪个位置......用dfs来模拟。

dfs传入一个cnt表示当前数组a的长度&#xff1b;如果当前长度等于目标长度&#xff0c;需要判断两个数组 是否一样&#xff0c;因为折叠的时候有左右两个方向&#xff0c;所以判断两个数组是否一样时需要正反判断两次&#xff1b; 如果当前长度小于目标长度&#xff0c;直接return&#xff0c;不用再折了&#xff1b;如果当前长度大于目标长度&#xff0c;需要再折叠。

如何模拟出折叠后的数组&#xff1f;我们可以根据折叠线把数组分成两部分&#xff0c;距离折叠线为1的就是c[1], 距离折叠先为2的就是c[2]....&#xff0c;根据题意&#xff0c;需要左右两部分加起来。

代码&#xff1a;

#include using namespace std;int n,m;
int a[20],b[20];
int c[20],isp;void dfs( int cnt )
{if ( isp&#61;&#61;1 ) return ;if ( cnt&#61;&#61;m ) {int op &#61; 1;for ( int i&#61;1; i<&#61;m; i&#43;&#43; ) {if ( b[i]!&#61;a[i] ) {op &#61; 0;break;}}int op2 &#61; 1;for ( int i&#61;m; i>&#61;1; i-- ) {if ( b[i]!&#61;a[m-i&#43;1] ) {op2 &#61; 0;break;}}if ( op&#61;&#61;1||op2&#61;&#61;1 ) isp&#61;1;}if ( cnt&#61;1; j-- ) {c[pos2&#43;&#43;] &#43;&#61; a[j];}for ( int i&#61;1; i}int main()
{cin >> n;for ( int i&#61;1; i<&#61;n; i&#43;&#43; ) scanf("%d",&a[i]);cin >> m;for ( int i&#61;1; i<&#61;m; i&#43;&#43; ) scanf("%d",&b[i]);isp &#61; 0;dfs(n);if ( isp&#61;&#61;1 ) cout <<"S" <}

 


推荐阅读
  • POJ2263是一个经典的图论问题,涉及寻找从起点到终点的最大载重路径。本文将详细介绍该问题的背景、解题思路及代码实现。 ... [详细]
  • 【数据结构】堆的实现(简单易懂,超级详细!!!)
    目录1、堆的概念及结构概念规律2、堆的实现2.1结构设计2.2接口实现2.3初始化2.4堆的向下调整算法主要思想涉及问题代码实现2.5建堆思想代码实现 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
  • UVa 1579 - 套娃问题
    本题主要涉及动态规划(DP)的应用,通过计算将前i个套娃合并成多个套娃组所需的最小操作次数来解决问题。具体来说,f(i) 表示前i个套娃合并成多个套娃组所需的操作次数,其计算公式为 f(i) = min(f(j) + dp(j+1, i))。 ... [详细]
  • mysql数据库json类型数据,sql server json数据类型
    mysql数据库json类型数据,sql server json数据类型 ... [详细]
  • 本题涉及一个长度为n的序列{ai},代表一系列树木的美学价值。任务是处理m个查询,每个查询提供三个参数l、r和P,目标是在所有满足l < l' ... [详细]
  • 题目编号:2049 [SDOI2008]Cave Exploration。题目描述了一种动态图操作场景,涉及三种基本操作:断开两个节点间的连接(destroy(a,b))、建立两个节点间的连接(connect(a,b))以及查询两节点是否连通(query(a,b))。所有操作均确保图中无环存在。 ... [详细]
  • 深入浅出C语言指针
    指针是C语言中极其重要的数据类型,广泛应用于各种数据结构的表示、数组和字符串的操作以及内存地址的处理。本文将通过实例详细解析指针的基本概念及其应用。 ... [详细]
  • C语言中的指针详解
    1.什么是指针C语言中指针是一种数据类型,指针是存放数据的内存单元地址。计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节, ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 本文详细介绍了在单片机编程中常用的几个C库函数,包括printf、memset、memcpy、strcpy和atoi,并提供了具体的使用示例和注意事项。 ... [详细]
  • 本文详细介绍了Sleep函数的基本概念、使用方法及其背后的实现原理。适合对Sleep函数的使用和实现感兴趣的开发者阅读。通过本文,您将了解如何在不同操作系统中使用Sleep函数,以及其在多线程编程中的重要性。 ... [详细]
  • 本文详细解析了NYOJ20 - 吝啬的国度问题,通过图的深度优先搜索(DFS)算法解决路径查询问题。 ... [详细]
  • 本文介绍了一种通过设置主题(Theme)来实现快速启动的Android引导页,并详细说明了如何避免因不同屏幕分辨率导致的图片拉伸问题。 ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
author-avatar
魔方16674
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有