题解 洛谷P6369 【[COCI2006-2007#6] MARATON】
这道题目我们可以模拟
我们枚举每一个点,如果他是字母,那么我们就直接算出他附近点的坐标,看这个点是否可行
如果可行,我们就输出,并结束程序。
题目过于简单,我就不多说了
#include<bits/stdc++.h> using namespace std; int Side; char Map[31][31]; int Dir[8][2]={1,0,0,1,-1,0,0,-1,1,-1,-1,1,1,1,-1,-1}; inline bool Check(int x,int y) { register int i; for(i=0;i<8;i++) { if(Map[x+Dir[i][0]][y+Dir[i][1]]==Map[x][y]&&Map[x+Dir[i][0]+Dir[i][0]][y+Dir[i][1]+Dir[i][1]]==Map[x][y]) { return true; } } return false; } int main() { register int i,j; cin>>Side; memset(Map,'.',sizeof(Map)); for(i=1;i<=Side;i++) { for(j=1;j<=Side;j++) { cin>>Map[i][j]; } } for(i=1;i<=Side;i++) { for(j=1;j<=Side;j++) { if(Map[i][j]>='A'&&Map[i][j]<='Z') { if(Check(i,j)) { cout<<Map[i][j]<<endl; return 0; } } } } cout<<"ongoing"<<endl; return 0; }
不要妄图追上西坠的太阳,而是要在黎明前就等着它!