专栏文章
题解:P13821 「Diligent-OI R2 A」蒹葭苍苍
P13821题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio66g00
- 此快照首次捕获于
- 2025/12/02 14:00 3 个月前
- 此快照最后确认于
- 2025/12/02 14:00 3 个月前
(蒟蒻不会一维做法,所以开了一个二维数组)
思路
因为只能向上、下或右方向,所以不可以往左回头,如果你决定往右走,就必须保证可以直接往下走到终点。

先用一个bool类型的二维数组将整个地图存起来(1表示可以走,0表示障碍物),然后判断当前格子下面这一整列有木有障碍物(最后一行除外,因为最后一行没有下面了)。如果没有就可以走(ans++),否则会被堵住,不可以往这格走。
完结撒花🌸
(嘻嘻骗你的:)这时候我们还没有到终点呢,前面只走到了第n-1行,所以要加上第n行的格数,这样才对✅
不懂看注释吧
贴上代码
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
bool a[105][105];
int b[105];
signed main() {
int n;
cin >> n;
int x;
for(int i = 1;i <= n;i++)
{
cin >> x;
b[i] = x;
for(int j = 1;j <= x;j++)
{
a[i][j] = 1;//标记可以走
}
}
int ans = 0;//计数器
for(int i = 1;i < n;i++)
{
for(int j = 1;j <= b[i];j++)
{
bool s = 1;
for(int z = i + 1;z <= n;z++)
{
if(!a[z][j])//a[z][j]为false
{
s = 0;//不可以走
break;
}
}
if(s)
{
ans++;
}
}
}
cout << ans + b[n] << '\n';//务必加上最后一行
return 0;
}
如果有可以改进的地方,可以在评论区指出
都看到这了,点个赞再走呗~
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...