时间限制:1秒 内存限制:128M 题目描述 水下探测器可以潜入湖中在任意水深进行科学探索。 湖水的最大深度为 h 米,即它在湖底时到水面的距离,0<=h<=100; 探测器最初的水下深度为 s 米,0<=s<=100; 当探测器不在水面(当前深度大于 0)时,每个 u 指令可使它上浮 1 米,而当探测器在水面时,u 指令是无效的; 当探测器不在湖底(当前深度小于 h)时,每个 d 指令可使它下沉 1 米,而当探测器在湖底时,d 指令是无效的; 在执行到无效指令时,探测器不做任何操作而继续执行下一指令。
编程实现: 根据给定的 h、s 和一个指令序列(由字符 u、d 组成的字符串,长度不超过 100),求出执行完整的指令序列后,探测器的水下深度。
输入描述 第一行:h 和 s,以空格分开。0<=s<=h<=100 第二行:长度不超过 100 的指令字符串,串中仅包含字母 u 或 d
输出描述 代表探测器在执行指令后的水下深度的数字。
样例 输入 9 1 uduudd 输出 2
#include<bits/stdc++.h>
using namespace std;
long long up(long long s){
if(s>0){
return s-1;
}
else{
return 0;
}
}
long long down(long long h,long long s){
if(s<h){
return s+1;
}
else{
return 0;
}
}
int main(){
long long h,s,l;
string x;
cin>>h>>s;
cin>>x;
l=x.size();
for(int i=1;i<=l;i++){
if(x\[i]=='u'){
s=up(s);
}
else if(x/[i]=='d'){
s=down(h,s);
}
}
cout<<s;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int h,s,i,a,ans;
string x;
cin>>h>>s>>x;
ans=s;
a=x.size();
for(i=0;i<a;i++)
{
if(x\[i]=='u'&&ans>0)
{
ans--;
}
if(x\[i]=='d'&&ans<h)
{
ans++;
}
}
cout<<ans<<endl;
return 0;
}
```~~~~
虽然搜到了正确代码但我好想知道哪里错了