UVA——1588

Linux下调试1588单步时间戳报文 这几天在为一个网络控制器实现IEEE 1588单步时间戳的驱动,几经调试终于完工了。顺便分享一下调试方法,当然如果你想玩1588的单步时间戳,首先得有支持这个功能的硬件平台。如果对1588报文单步时间戳不了解,可以查看我之前的文章“IEEE 1588 Sync报文单步时间戳”。 平台和工具 我用的平台就不透露了,测试使用两块板子,网口直连。用到的软件包括, Linux:这是我板子的OS,包含我要验证的驱动。 tcpdump:抓包工具,位于板子的文件系统。 linuxptp:开源PTP软件,位于板子的文件系 阅读详情

问题描述:


解决方案:

#include <iostream>
#include <cstdio>
#include <cstring>
int getLength(char*top,char*bottom)
{
    int len1 = 205,len2 = 205;
    int b_index = 0;
    int p;
    while(bottom[b_index])
    {
        p = 0;
        while(bottom[b_index + p] && top[p])
        {
            if(bottom[b_index + p] - '0' + top[p] > '3')
                break;
            p++;
        }
        if(!bottom[b_index + p] || !top[p])
            break;
        b_index++;
    }
    if(!top[p])
        len1 = strlen(bottom);
    if(!bottom[b_index])
        len1 = strlen(bottom) + strlen(top);
    if(p && !bottom[b_index + p])
        len1 = strlen(bottom) + strlen(top) - p;

    p = 0;
    int top_len = strlen(top);
    b_index = top_len - 1;
    while(b_index >= 0)
    {
        p = 0;
        while(b_index - p >=0 && top_len - p -1 >= 0)
        {
            if(bottom[b_index - p] - '0' + top[top_len - p - 1] > '3')
                break;
            p++;
        }
        if(b_index - p < 0 || top_len - p < 0)
            break;
        b_index--;
    }
    if(top_len - p - 1 < 0)
        len2 = strlen(bottom) - strlen(top);
    if(b_index < 0)
        len2 = strlen(bottom) + strlen(top);
    if(p && b_index - p < 0)
        len2 = strlen(bottom) + strlen(top) - p;
    return len1 > len2?len2:len1;
}
int main()
{
    char bottom[105],top[105];
    while(scanf("%s",bottom) != EOF){
        scanf("%s",top);
        int length;
        if(strlen(bottom) < strlen(top))
            length = getLength(bottom,top);
        else
            length = getLength(top,bottom);
        printf("%d\n",length);
    }
    return 0;
}
核心思路:总是将长的作为底考虑,分为两种情况讨论,1.短边从右边出头 2.短边从左边出头,其他情况与任意一种合并即可(能够合并,不能合并)。
UVa1588(换低档装置) UVa1588(算法竞赛第二版习题3-11) 题目描述:给出两个长度为n1,n2(n1,n2≤100)n_1,n_2(n_1,n_2 \le 100)n1​,n2​(n1​,n2​≤100)且每列高度只为1或2的长条。需要将它们放入一个高为3的容器,问能够容纳它们的最短容器长度。 例如: 读入的数据对应: 2112112112 2212112 对应的最小容器(长度为10) Input:读入数... 阅读详情

相关推荐

【机电杂谈2】BLDC和PMSM的特点和区别

在日常生活中,小到电动玩具,大到电动汽车,永磁电机的身影可以说是无处不在。有刷直流电机、无刷直流电机、永磁同步电机由于其结构和输出特定的不同也被应用到不同的场合。如果你经常拆一些玩具和家电,就会看到大量的有刷直流电机和无刷直流电机,而永磁同步电机主要应用在高精度的工业伺服和电动汽车领域。本文就从电机的结构和控制方面,对这几种常见的永磁电机做简单的梳理和归纳。

2934

【日期、时区、时间】本地时间转UTC时间详解

/** * 把时间转化为utc时间格式 * * @param localTime * @return */ public static Date translatetoUtc(long localTime, TimeZone localZone) { Calendar cal = Calendar.getInstanc...

m0_45406092的博客 1万+

【simulink模型】独立悬架振动模型,七自由度整车simulink模型

车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。

2401_84610415的博客 1581

UVa1588(换抵挡装置 Kickdown)

UVa1588 解题报告 (换抵挡装置 Kickdown)1、题目大意 1、题目大意 题目链接UVa1588 题目大意:给出两个长度分别为 n1, n2 (n1, n2 ≤ 100) 且每列高度只为1或2的长条。需要将它们放入一个高度为3的容器,如图。问能够容纳它们的最短容器长度。 ...

Armstrong的博客 589

如何用Python分析20年投资者情绪数据(附ISI和CICSI完整数据集)

本文提供了一份利用Python分析2003-2023年投资者情绪数据的实战指南。文章详细介绍了如何获取并清洗ISI和CICSI数据集,运用Pandas、Matplotlib等工具进行数据探索、可视化与深度分析,包括趋势分解、成分关联及情绪状态划分,旨在帮助读者掌握从数据到洞察的完整流程,为量化金融研究提供方法论支持。

gpu4optimizer的博客 468

Flutter蓝牙开发实战:flutter_blue_plus核心功能与实现原理剖析

本文深入剖析了Flutter蓝牙开发插件flutter_blue_plus的核心功能与实现原理。文章从源码解析入手,详细讲解了蓝牙状态管理、设备扫描、GATT连接、服务发现以及数据读写等关键流程的实现机制,并分享了实战中的性能调优与常见问题解决方案,帮助开发者高效构建跨平台蓝牙应用。

weixin_29014237的博客 443

1588分析和实现总纲

1588博客总体分为两部分:协议分析和协议实现。1588协议有一定难度,主要是因为它涉及的面较广,同步算法较为复杂。 (一)协议分析 主要基于《IEEE 1588-2008》分析1588协议中的一些重点概念的解析和难点问题。 有些将以问答的形式提供。如为什么需要有透明钟? 有些以总结的形式提供。如如何解决1588中的非对称性? (二)协议实现 将以贴代码的形式讲解,当然

YEYUANGEN的专栏 3719

AD(AltiumDesigner)封装导入allegro生成allegro封装

AD(AltiumDesigner)封装导入allegro生成allegro封装 貌似PCB的封装问题是一个无尽话题,为了简单我总是想找捷径(主要还是太懒了),因为也是近期才开始学习使用allegro进行PCB设计,在最近的一个设计中,很多器件封装allegro中都没有,一个一个画感觉很费时间,但是在AD(AltiumDesigner)的封装库中是有的,于是便想着AD的封装库能不能倒入到alleg...

yangh2560的博客 2万+

uva 1588

地址:https://www.luogu.org/problem/UVA1588 这题看起来很简单,按照题目模拟判断就可以了,但是很容易想漏一些情况。 举个例子,设两长条的长度分别为l1,l2(l1<=l2),我一开始想只把l1向右移动一一比较,这样就可以得出答案了,样例也过了,但是却wa了,为什么呢?因为l1也可以向左移动,这样答案可能更优,所以我们得做两次操作,一次向左一次向右! 为了简...

qq_37073764的博客 345

Unity工业数据可视化:基于ModbusTCP的实时数据通信实战

本文详细介绍了在Unity中实现工业数据可视化的核心方法,重点讲解了基于ModbusTCP协议与PLC等工业设备进行实时数据通信的实战流程。内容涵盖NModbus库的集成、Modbus Slave模拟器的使用、TCP连接的建立与多线程安全通信、数据读写与解析,以及如何将实时数据驱动3D场景,为构建工业数字孪生与监控系统提供完整解决方案。

ol7890123的博客 553

为什么AI时代的优秀组织,都在学习Meta的Pod结构?看完秒懂

当AI技术重塑产业格局,企业协作正面临前所未有的挑战——层级繁琐、跨部门内耗、迭代滞后,传统组织模式早已难以跟上技术革新的步伐。作为全球AI原生企业的标杆,Meta独创的Pod组织模式,用“小而美”的自治单元打破困局,成为AI时代高效协作的典范。本文将从定义、运作、价值到未来演进,全面拆解Pod模式,为企业组织变革提供可参考的思路与路径。德鲁克曾说:“组织的功能就是让平凡的人做平凡的事。”而Meta Pod打破这一局限,通过去中心化、指标导向、跨界融合,让优秀人才产生“化学反应”。

Kiss_AIHR的博客 1166

uva1588kickdown

uva1588kickdown 题目要求简述:给定长度分别为n1,n2(n1,n2<=100)且每列的高度只为1或者2的长条。需要将他们放入一个高度为3的容器,问能够容纳它们的最短容器长度。 思路就是固定一个字符串a,字符串b移动,再固定b,让a移动,取二者...

awyo96572的博客 236

开源3D激光SLAM算法的异同点、优劣势与适配场景总结

本文对比分析了主流开源3D激光SLAM方案的核心差异与适用场景。LOAM架构简洁但精度较低;LeGO-LOAM轻量化适合地面机器人;LIO-SAM采用因子图优化支持多传感器融合;LVI-SAM通过视觉-激光-惯性三重冗余提升鲁棒性;FAST-LIO系列基于滤波架构实现超高实时性。选型需权衡传感器配置(纯激光/激光+IMU/激光+视觉)、运动状态(高速/常规)、计算资源等因素:资源受限选LeGO-LOAM或Faster-LIO,高速运动选FAST-LIO系列,退化环境选LVI-SAM,全局一致性需求选LIO-

Studying…… 650

Kickdown UVA - 1588

Kickdown UVA - 1588 这一题就比较简单了,就是让你将两个模具放到一个高度为3的空间里,问最小需要多少的长度。 就用一个模具从最左未接触到最右未接触匹配一遍就行,我这里是用另一种方法实现的,即用一个模具直接从第一位开始向右匹配一遍找一个最小值,再用另一个模具匹配这一个找最小值,然后取两个最小值间最小的。 #include<bits/stdc++.h> using nam...

qq_42882715的博客 243

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

UVA 1588 Kickdown

UVA - 1588题目大意: 为了让齿轮完美切合,上齿轮和下齿轮相合,高度为3h, 齿轮突出部分以2代替,凹陷部分以1代替,输出两者能切合最小的长度.解题思路: 由于齿轮长度随机,则以下部分不动,分为上部分相对左移和相对右移两种情况,取最小的一个.#include<stdio.h> #include<iostream> #include<string.h> using namespace s

Dreamy_LIN的博客 558

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

UVa 1588 Kickdown

UVA - 1588发现自己自带水题免疫天赋(更别说难题了),这道题wa了三次,原因还是自己思维不够缜密这道题一开始以一边为起点开始遍历,其实还应该倒过来遍历一遍,两次遍历过程可以简化为一个我用的简单复制粘贴所以代码量比较大,上下两部分称对称结构。。#include&lt;iostream&gt; #include&lt;cstring&gt; #i...

STOP 452

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

UVa1588-Kickdown

UVa1588-Kickdown思路:这个题目的思路很好想到就是分别将两个字符串滑动比较他们重叠的每一位,如果有一位都是2则不行,如果这个重叠状态合法,就将这个状态的长度与当前最小值比较取小的那个。刚开始想怎么在一个循环里面把两边都给算上卡了很久发现很难搞,最后发现还是用两个循环分别比较好弄的多。代码:#include <bits/stdc++.h>using namespace std; stri

进击的ACMer!!! 476

UVa1588

送上神奇数据一组~对了基本就没问题了 211112 22221111 答案是9#pragma warning(disable:4996) #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<vector> #include<algorithm> #include<iostream> #incl

JACK_JYH的博客 1158

习题3-11 UVa1588-Kickdown

本题的关键是将两个长条的嵌合想象成动态的过程:两长条嵌合只有两种情况,长条s向左移动嵌入长条t或者长条t向左移动嵌入长条s。 题目链接:UVa 1588 AC代码: #include <iostream> #include <string> using namespace std; int min(int a, int b) { if (a > b) retur...

qq_21606413的博客 196

UVA - 1588 Kickdown

UVA - 1588 Kickdown题目大意:给出两个长度不一定相同且每列高度为 1 或 2 的长条,将它们放入一个高度为 3 的容器,求最短容器长度。解题思路:一个一个匹配 超过3的就不可以 然后左右移动上面的 取最小的#include<iostream> #include<cstring> #include<cstdio> int max(int x, int y) { if (x >

cwb15505905513的博客 434

【UVA】 1588 --- Kickdown

【UVA】 1588 --- Kickdown A research laboratory of a world-leading automobile company has received an order to create a special transmission mechanism, which allows for incredibly efficient kickdown – a...

来日浅谈的博客 765

UVa 1588:Kickdown

题目传送门:UVa 1588:Kickdown两个字符串,滑动匹配:#include <stdio.h> #include <string.h> #define MAXLEN 105int getMaxLength(char master[], int lenM, char driven[], int lenD) { int i = 0, j = 0, matchPos = 0; // ma

请叫我AXin 1184

第三章:UVa1588 解题报告

UVa1588 解题报告这道题可以直接模拟。因为齿轮是条状,高度只有两种,所以只要匹配字符串就可以了。两个字符串的相交区域计算高度相加是不是大于3,小于3便是合法的配对。处理A、B两个字符串时枚举B在总长中的起点和B的自身下标后进行匹配即可。以A的0下标为原点,B的0下标设为起点,这样B的起点从负数-B.length()开始,一直到A.length()+B.length(),然后B在A上左右滑动,寻

THOUSANDCODES工作室 2153

算法竞赛入门经典(第2版) Kickdown UVa 1588

Kickdown UVa 1588 ————————————————————————— 题目:UVa1588 ————————————————————————— 思路:先把字符转为数字方便加法判断,先下面不动上面动,反过来再来一次,check是否满足条件,最后取两者较小值作为答案。 Sample Input 2112112112 2212112 12121212 21212121 2211221122 21212 Sample Output 10 8 15 #include<bits/stdc++

Daniel的博客 241

UVA 1588-Kickdown

UVA 1588-Kickdown题目大意: 一个容器高度为3,俩个成员都是1或2的字符串,判断容器长度最短多少可以装下俩个字符串解题思路: 从字符串a的最后一个字符与字符串b的第一个字符开始,依次比较,找出最优解 #include <stdio.h> #include <iostream> #include <string.h> using namespace std; int main() {

ZeroLH00的博客 411
上一篇: UVA——1587
瓜皮小白
博客等级 码龄11年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值