社区讨论
请求帮助
P7185 [CRCI2008-2009] CIJEVI参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m5zbstck
- 此快照首次捕获于
- 2025/01/16 20:47 去年
- 此快照最后确认于
- 2025/11/04 11:29 4 个月前
我明明红了#7和#10,但为什么洛谷给我过了,但显示0分(雾)
CPP#include<bits/stdc++.h>
using namespace std;
struct st{
char cijevi;
int up,down,left,right;
bool edge=0;
};
int main(){
int r,c,mx,my,zx,zy;
cin>>r>>c;
st a[r+5][c+5];
for(int i=0;i<=r+1;i++)a[i][0].edge=1,a[i][c+1].edge=1;
for(int j=0;j<=c+1;j++)a[0][j].edge=1,a[r+1][j].edge=1;
string tmp;
for(int i=1;i<=r;i++){
cin>>tmp;
for(int j=1;j<=c;j++){
a[i][j].cijevi=tmp[j-1];
switch(a[i][j].cijevi){
case '|':
a[i][j].up=1,a[i][j].down=1,a[i-1][j].down=1,a[i+1][j].up=1;
break;
case '-':
a[i][j].left=1,a[i][j].right=1,a[i][j-1].right=1,a[i][j+1].left=1;
break;
case '+':
a[i][j].up=1,a[i][j].down=1,a[i-1][j].down=1,a[i+1][j].up=1,a[i][j].left=1,a[i][j].right=1,a[i][j-1].right=1,a[i][j+1].left=1;
break;
case '1':
a[i][j].right=1,a[i][j].down=1,a[i][j+1].left=1,a[i+1][j].up=1;
break;
case '2':
a[i][j].right=1,a[i][j].up=1,a[i-1][j].down=1,a[i][j+1].left=1;
break;
case '3':
a[i][j].up=1,a[i][j].left=1,a[i-1][j].down=1,a[i][j-1].right=1;
break;
case '4':
a[i][j].left=1,a[i][j].down=1,a[i][j-1].right=1,a[i+1][j].up=1;
break;
case 'M':mx=i,my=j;break;
case 'Z':zx=i,zy=j;break;
case '.':break;
}
}
}
int n=0;
if(a[mx][my].up!=1 and a[mx][my].down!=1 and a[mx][my].left!=1 and a[mx][my].right!=1)
a[mx+1][my].up=1,a[mx-1][my].down=1,a[mx][my+1].left=1,a[mx][my-1].right=1;
if(a[zx][zy].up!=1 and a[zx][zy].down!=1 and a[zx][zy].left!=1 and a[zx][zy].right!=1)
a[zx+1][zy].up=1,a[zx-1][zy].down=1,a[zx][zy+1].left=1,a[zx][zy-1].right=1;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(a[i][j].cijevi=='.'){
n==a[i][j].up+a[i][j].down+a[i][j].left+a[i][j].right;
if(n==4){
cout<<i<<" "<<j<<" "<<'+';return 0;
}
else if(a[i][j].up==1){
if(a[i][j].down==1){
cout<<i<<" "<<j<<" "<<'|';return 0;
}
else if(a[i][j].right==1){
cout<<i<<" "<<j<<" "<<'2';return 0;
}
else if(a[i][j].left==1){
cout<<i<<" "<<j<<" "<<'3';return 0;
}
}
else if(a[i][j].right==1){
if(a[i][j].left==1){
cout<<i<<" "<<j<<" "<<'-';return 0;
}
else if(a[i][j].down==1){
cout<<i<<" "<<j<<" "<<'1';
return 0;
}
}
else if(a[i][j].left==1 and a[i][j].down==1){
cout<<i<<" "<<j<<" "<<'4';
return 0;
}
}
}
}
}
欢迎大佬纠正错误,帮我过掉#7、#10
回复
共 0 条回复,欢迎继续交流。
正在加载回复...