标签:cnt 机器人 试题 格子 max 重邮 指令 2020 跳跃
有一个机器人站在一排长度为m+2的格子上,从左往右依次标号为0, 1, 2, 3, ..., m + 1。它现在位于第0个格子。第1个到第m个的每个格子上都分布着一个指令,要么为'L',要么为'R'。'L'表示如果机器人在这个格子,它只能选择向左跳跃;'R'表示如果机器人在这个格子,它只能选择向右跳跃。机器人在格子0只能选择向右跳跃。
这个机器人想到达格子m+1。机器人在开始跳跃之前,会选择一个正整数d并且每次跳跃最多跳跃d个格子,最少跳跃1个格子。一旦开始跳跃,这个正整数d就无法改变了。这意味着,假设机器人当前位于第i个格子,如果这个格子的指令是'L',那么机器人可以跳跃到的下一个格子的范围是[max(0, i - d),i-1];如果这个格子的指令是'R',那么机器人可以跳跃到的下一个格子的范围是[i+1, min(m+1, i+d)]。
由于机器人的能量是有限的,它每次并不想跳得太远。所以它希望选择一个最小的值d,能够让他从第0个格子经过若干次的跳跃之后到达第m+1个格子。跳跃的次数是没有限制的,只要机器人最终能到达第m+1个格子。而且指令的分布保证了一定可以找到至少一个满足条件的d值。
指令的输入格式为一个字符串s,长度为m。
你需要对t个不同的字符串s,输入满足条件的最小的d值。
编程实现上述问题。
d值就是机器人可以跳的最小的最远长度,比如指令是R,因为本来再m处要到m+1处所以输出d为1,同理LLR为3
#include<stdio.h>
#include<string.h>
int main(){
int i,cnt,max=0;
char *a[4];
char str[4][6]={"R","RRRR","LLR","RLLL"};
char *p=a[0];
for(i=0;i<4;i++){
a[i]=str[i]; //将第i个字符串的首地址赋予指针数组a的第i个元素 ,即对指针数组初始化,不进行初始化程序会报错
}
for(i=0;i<4;i++){
cnt=0;
max=0;
for(p=a[i];*p!='\0';p++){
if(*p=='L'){
cnt++;
if(cnt>max) max=cnt;
}else{
cnt=0;
}
}
printf("%d\n",max+1);
}
return 0;
}
输出结果是对的,现在有一个小问题是怎么自己输入数组的值再定义数组长度,以下编译通过不了,
scanf("%d",&t);
char *a[t],
标签:cnt,机器人,试题,格子,max,重邮,指令,2020,跳跃 来源: https://blog.csdn.net/secretmiracle/article/details/122546894
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。