9 GHacker的解谜过关游戏

本文介绍了一种用于解谜游戏过关的算法,该算法能够从包含数字和非数字的字符串中提取所有非负整数并求和,适用于游戏过关等场景。通过使用C语言实现,文章提供了详细的代码解析。

问题 H: GHacker的解谜过关游戏

时间限制: 1 Sec  内存限制: 2 MB
提交: 7294  解决: 4477
[提交][状态][讨论版]

题目描述

GHacker最近痴迷于一个新上市的解谜游戏,其中一关的过关是破解一个字符串S。经过3天的冥思苦想,GHacker成功的搞明白了这其中的奥秘,把串S中的整数取出来求和,就可以过关了。但是GHacker的数学实在糟糕。他无法在短暂的时间内算出来,只好求助Jackie。Jackie观察到虽然每次出现的数字不同,但是其它的符号并不会变化。于是Jackie编写了一个非常短的程序,帮助GHacker把这一关过了。

输入

输入为串S,只有一行。

输出

串S中用非数字(0~9)分隔开的非负整数之和,不会超出int类型的数据范围。

样例输入

`13?:[7514],54.487=="(438922x159??392)%032\n111cdef120$95;

样例输出

447899

提示

 

scanf()可以解决这个问题,注意转义字符和格式控制字 1 #include<stdio.h>

#include<stdio.h>
int main()
{
    int i,sum,num;
    char str[1000];
    while(scanf("%s",str)!=EOF)
    {
        num=sum=0;
        for(i=0;;i++)            //因为字符是一直输入的;
        {
            if(str[i]>='0' && str[i]<='9')
                num=num*10+str[i]-'0';    //‘0’的作用相当于将str[]里面的字符型数字转换成整型;
            else                    //str[i]-'0' 就是数字字符的ascii码转换成数值
            {
                sum=sum+num;num=0;       //比如'9'=57 因为数字的ascii码是连续的所以'9'-'0'=57-48=9
                if(str[i]=='\0')break;   //'0'代表停止输入了;
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}

 

 

 num=num*10+str[i]-'0';关键代码,数组挨个接收字符,如果接收到fff5gdg就是数值5,如果****55**就是数值55,
因为上一个*10刚好去了十位,以此不断for循环,更多连续数字出现就再多乘以10

转载于:https://www.cnblogs.com/zoti007/articles/9807330.html

内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值