社区讨论

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 条回复,欢迎继续交流。

正在加载回复...