社区讨论
P1518哪错了......
题目总版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi7wk8sx
- 此快照首次捕获于
- 2025/11/21 04:47 4 个月前
- 此快照最后确认于
- 2025/11/21 04:47 4 个月前
CPP
#include <cfloat>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <fstream>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <time.h>
#include <vector>
#define pb push_back
#define mp make_pair
#define ed cout<<endl;
#define F first
#define S second
#define ll long long
#define vi vector<int>
#define pii pair<int,int>
using namespace std;
const int INF=99999999;
int n=10,m=10,ans;
int cx,cy,cf=3,fx,fy,ff=3;
char c[15][15];
int dx[]={1,-1,0,0};
int dy[]={0,0,-1,1};
int t[]={2,3,1,0};
void out() {
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(i==cx&&j==cy) {
cout<<"C";
} else if(i==fx&&j==fy) {
cout<<"F";
} else if(c[i][j]=='F'||c[i][j]=='C') {
cout<<".";
} else {
cout<<c[i][j];
}
}
cout<<endl;
}
cout<<endl;
return ;
}
void go(int &x,int &y,int &f) {
int nx=x+dx[f];
int ny=y+dy[f];
if(c[nx][ny]=='*'||nx<1||ny<1||nx>n||ny>m) {
f=t[f];
} else {
x=nx;
y=ny;
}
return ;
}
int main()
{
// freopen("ttwo.in","r",stdin);
// freopen("ttwo.out","w",stdout);
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cin>>c[i][j];
if(c[i][j]=='C') {
cx=i;
cy=j;
} else if(c[i][j]=='F') {
fx=i;
fy=j;
}
}
}
while(fx!=cx||fy!=cy) {
go(fx,fy,ff);
go(cx,cy,cf);
ans++;
out();
if(ans>100) {
cout<<0<<endl;
return 0;
}
}
cout<<ans<<endl;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...