mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-12-16 20:23:00 +00:00
feat: 添加P9015题解实现
实现一个模拟算法来解决P9015问题,根据输入数组的值控制移动方向并输出路径。当遇到边界或特定条件时改变方向,直到所有元素耗尽。
This commit is contained in:
parent
65fe11a140
commit
32de376783
57
src/10/18/P9015.cpp
Normal file
57
src/10/18/P9015.cpp
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#include <cstdint>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <iostream>
|
||||||
|
#include <istream>
|
||||||
|
using ll = int64_t;
|
||||||
|
|
||||||
|
const ll maxn = 1e5+5;
|
||||||
|
ll n;
|
||||||
|
ll a[maxn];
|
||||||
|
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::iostream::sync_with_stdio(false);
|
||||||
|
std::cin.tie(nullptr);
|
||||||
|
|
||||||
|
std::cin>>n;
|
||||||
|
for(ll i=1;i<=n;i++){
|
||||||
|
std::cin>>a[i];
|
||||||
|
}
|
||||||
|
ll now=0;
|
||||||
|
ll dir=1;
|
||||||
|
while (1) {
|
||||||
|
if(now==0 && dir==-1){//往左走走到头
|
||||||
|
if(a[1]==0)break;
|
||||||
|
dir=1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(now==n && dir==1){//往右走走走到头
|
||||||
|
dir=-1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(dir==1){
|
||||||
|
if(a[now+1]==0){
|
||||||
|
dir=-1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
putchar('R');
|
||||||
|
now++;
|
||||||
|
a[now]--;
|
||||||
|
}else{
|
||||||
|
if(a[now]==1){
|
||||||
|
if(a[now+1]==0){
|
||||||
|
putchar('L');
|
||||||
|
a[now]--;
|
||||||
|
now--;
|
||||||
|
}else{
|
||||||
|
dir=1;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
putchar('L');
|
||||||
|
a[now]--;
|
||||||
|
now--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
putchar(*"\n");
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user