实现
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N];
int n;
int ans;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<n-1;i++)
{
if((a[i]>a[i+1] && a[i]>a[i-1])||(a[i]<a[i-1] && a[i]<a[i+1]))
ans++;
}
cout<<ans;
}
实现
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 17;
int g[N][N], st[N][N];
int p[4][4];
bool draw(int x, int y)
{
memcpy(st, g, sizeof st);
for (int i = 0; i < 4; i ++)
for (int j = 0; j < 4; j ++)
{
if (p[i][j])
{
int a = x + i, b = y + j;
st[a][b] ++;
if (st[a][b] == 2) return true;
}
}
return false;
}
int main()
{
for (int i = 0; i < 15; i ++)
for (int j = 0; j < 10; j ++)
cin >> g[i][j];
for (int i = 0; i < 4; i ++)
for (int j = 0; j < 4; j ++)
cin >> p[i][j];
for (int j = 0; j < 10; j ++) g[15][j] = 1;
int c;
cin >> c;
c --;
for (int i = 0; ; i ++)
{
if (draw(i, c))
{
draw(i-1, c);
break;
}
}
for (int i = 0; i < 15; i ++)
{
for (int j = 0; j < 10; j ++)
cout << st[i][j] << " ";
cout << endl;
}
return 0;
}
实现
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
int n;
vector<string> path;
vector<string> curr;
vector<string> get(string t)
{
vector<string> tmp;
for (int i = 0; i < t.size(); i++)
{
if (t[i] == '/') continue ;
int j = i + 1;
while (t[j] != '/' && j < t.size())
{
j++;
}
tmp.push_back(t.substr(i, j - i));
i = j - 1;
}
return tmp;
}
void walk(vector<string>& p,vector<string> cur)
{
for(auto tt:p)
{
if(tt=="..")
{
if(cur.size())cur.pop_back();
}
else if(tt==".") continue ;
else cur.push_back(tt);
}
if(!cur.size())
{
cout<<"/"<<endl;
return ;
}
for(auto tt:cur)
{
cout<<"/";
cout<<tt;
}
cout<<"\n";
}
int main()
{
string t;
cin >> n >> t;
curr = get(t);
getchar();
while (n--)
{
getline(cin, t);
if(t=="")
{
for(auto tt:curr)
{
cout<<"/";
cout<<tt;
}
cout<<endl;
continue;
}
path = get(t);
vector<string> kong;
if(t[0]!='/') walk(path,curr);
else walk(path,kong);
}
return 0;
}
实现
#include<bits/stdc++.h>
using namespace std;
int n,m,t;
const int N = 110;
bool g[N][N][10010];
int dist[N][N][310];
struct node
{
int x,y,time;
}nodes[110*110*310];
int bfs()
{
int dx[4] = {-1,0,1,0},dy[4] = {0,1,0,-1};
queue<node> q;
q.push({1,1,0});
memset(dist,0x3f,sizeof dist);
while(q.size())
{
auto t = q.front();
q.pop();
for(int i=0;i<4;i++)
{
int xx = t.x+dx[i],yy = t.y+dy[i],tt = t.time+1;
if(g[xx][yy][tt]) continue;
if(xx<1 ||xx>n || yy<1 ||yy>m ) continue;
if(dist[xx][yy][tt]>tt)
{
dist[xx][yy][tt] = tt;
q.push({xx,yy,tt});
if(xx==n &&yy==m) return tt;
}
}
}
return 0;
}
int main()
{
cin>>n>>m>>t;
int x,y,t1,t2;
while(t--)
{
cin>>x>>y>>t1>>t2;
for(int i=t1;i<=t2;i++)
g[x][y][i] = 1;
}
cout<<bfs()<<endl;
}