题解:学而思编程 蚂蚁碰撞
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】学而思编程蚂蚁碰撞【题目描述】在一个无限长的木板上有n nn只蚂蚁正在移动。蚂蚁按照从左到右的顺序从1 11到n nn编号每只蚂蚁都在一个与其他蚂蚁互不相同的位置上。初始时每只蚂蚁都有一个初始朝向L LL表示向左移动R RR表示向右移动S SS表示静止不动。每只蚂蚁的移动时的速度相同然而在移动过程中部分蚂蚁之间会产生碰撞在两只蚂蚁发生碰撞之后都会停留在碰撞的位置无法再继续移动。所有蚂蚁不能改变它们的移动方向和状态。现在给定所有蚂蚁的初始朝向请你计算所有蚂蚁在木板上发生的碰撞总次数。碰撞次数按照一下方式计算当两只移动方向相反的蚂蚁相撞时碰撞次数加2 22当一只移动的蚂蚁和一只静止的蚂蚁相撞时碰撞次数加1 11。【输入】一行一个字符串d i r dirdir表示所有蚂蚁的初始朝向保证d i r dirdir只包含L LLR RR或S SS。【输出】一行一个整数表示所有蚂蚁在木板上发生的碰撞总次数。【输入样例】RLRSLL【输出样例】5【算法标签】#字符串入门【代码详解】#includebits/stdc.husingnamespacestd;intcal(string s){intl0,rs.size()-1;// 左右指针// 去掉前缀的Lwhile(lrs[l]L){l;}// 去掉后缀的Rwhile(lrs[r]R){r--;}intans0;// 统计中间非S字符的个数for(intil;ir;i){if(s[i]!S){ans;}}returnans;}intmain(){string dir;cindir;// 输入字符串coutcal(dir);// 输出计算结果return0;}【运行结果】RLRSLL 5

相关新闻