清华数据结构循环位移AC100
这里主要的一个思想是,如果能经过n次循环相等,必然存在str1的前半段和str2的后半段相等。
利用这一性质,就不难写出代码了
之前有考虑过制表,但发现制表也不能增快速度,就放弃了
//没有对二叉堆进行封装,因为没有必要
#define _CRT_SECURE_NO_DEPRECATE
#define maxn 100001
#include<stdio.h>
#include<string.h>
using namespace std;
char str1[maxn];
char str2[maxn];
int find_in2(char*str1,char*str2)
{auto mi = 0;while (str2[mi++] != str1[0]);return --mi;
}
int answer = 0;
int position;
bool compare(int&head2,int l1,int head1,char*str1,char*str2)
{position = head2;int second_start=0;auto temp = head1;while (str1[head1++] == str2[head2++]&&head2<l1) {if (!second_start&&str2[head2] == str1[temp])second_start = head2 ;}if (str1[head1 - 1] == str2[head2 - 1]) { answer = 1; return true; }else {if(second_start)head2 = second_start;else while (head2 < l1&&str2[head2] != str1[temp])head2++;return false;}
}
bool check_rest(int l1,char*str1,char*str2)
{int i = 0, j = l1 - position;while (i < position&&str2[i++] == str1[j++]);return i == position ? true : false;
}
int main()
{
#ifndef _OJ_freopen("cycle.txt", "r", stdin);// freopen("travelout.txt", "w", stdout);
#endifwhile (scanf("%s %s", &str1, &str2)!=EOF){answer=0;int l1 = strlen(str1), l2 = strlen(str2);if (l1 == l2) {int compare_head = find_in2(str1,str2);auto temp = compare_head;while (!compare(compare_head, l1, 0, str1, str2) && compare_head < l1);if (answer&&check_rest(l1,str1,str2))printf("YES\n");else printf("NO\n");}else printf("NO\n");}
}
清华数据结构循环位移AC100相关推荐
- 清华数据结构任务调度AC100
这里要注意以下几点: 1.由于是不超过8位的字符串,因此在构造字符串的时候应当保证是char xx[9]:如果不是9,是别的话,那么字符数组会装不下,这样会导致最终的结果出现问题.这种情况已经发生过很 ...
- 清华数据结构平均气温AC100
写在最前: 这道题,其实最节约时间的算法应该是用FC tree,用该数据结构可以在logn的时间内算出来. 但是,说实话,我写不出这样的树出来,至少目前没必要,因为这样太麻烦了,关键是指针不好指. 所 ...
- 清华数据结构列车调度AC100分
两种思路 (1)将目标栈的数据和待混洗的数据逐个进行比较 #pragma warning(disable:4996) #include<stdio.h> #include<strin ...
- 清华数据结构真二叉树重建AC100
该题难点主要在于如何判断哪边是左子树,哪边是右子树 假设先序序列为a[maxn],后序序列为b[maxn] 对于类似数据为 13 1 2 4 6 10 9 12 13 7 11 8 5 3 10 12 ...
- 清华数据结构重名剔除AC100
1.首先需要找打大于600000的最大素数,寻找素数的方法,我用的是比较笨的方法,就是用x的平方根以下的数y去除,若x%y全部都不为0,则为素数. 2.对每一个菜谱进行编码,我的编码方法如下,具体的编 ...
- 清华数据结构无线广播AC100
#pragma warning(disable:4996) #include<stdio.h> using namespace std; #define maxn 10000 #defin ...
- 【学堂在线】清华数据结构 OJ小记录
MOOC数据结构 OJ题记录 PA1-1 范围查询 (对应课程:绪论+向量) PA1-2 祖玛问题 (对应课程:列表) PA 1-3 灯塔(归并) PA 2-1 列车调度(栈) PA 2-2 真二叉树 ...
- 清华数据结构PA7——无线广播(Broadcast)
题目:https://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=1148 思路很简单,选取一个无前驱的点,给定一个fm然后进行bfs,将其相邻的点给定一个与 ...
- 清华计算机考研csp,「考研2021」400分跨考清华大学软件学院经验帖
基本信息:应届武汉大学本科生 跨考清华计算机系学硕拟录取.学硕面试结束,一切尘埃落定,趁现在回忆还比较清晰,记录下一年来的奋斗历程,以供诸君参考. 择校 择校当时拟定的有三所:浙大,北大,清华.然而北 ...
最新文章
- 云炬随笔20210930
- tensorflow神经网络结构可视化
- 一个C#读写Dxf的类库DXFLibrary
- 解决ueditor jquery javascript 取值问题
- mysql memcached 使用场景_memcache 应用场景
- yy神曲url解析php_php解析url的三个示例
- PTA c语言 统计一行文本的单词个数
- 使用GridFsTemplate来实现文件归类
- Vscode合并develop代码分支到master开发分支
- 反相高低频技术磨皮法
- 艺术留学|工业设计专业2019大学新排名
- matlab中clc、clear、clear all、clf、close、close all命令
- 判断闰年和平年的程序
- 元宵佳节,戴铭老师亲自带你分析iOS行业动态!
- Web开发应了解的5种设计模式(转)
- 【恩墨学院】为什么用尽了办法你的系统性能还是不见改善?
- IPFS终将沦为大型韭菜收割机
- Python爬虫之爬取淘女郎照片示例详解
- Vmware ESXI 6.7升级版本
- python-微信自动发送信息2