本文共 1418 字,大约阅读时间需要 4 分钟。
#include#include #include #include using namespace std;const int N=200+10;struct Node{ int x,y,v;}node[N][N],tt,ne;int n,m;bool book[N][N];queue q;int step[3][2]={ {0,1},{1,0},{1,1}};int main(){ int i,j,k,z; int re; while(cin>>n>>m){ re=-99999999; for(i=0;i >node[i][j].v; node[i][j].x=i; node[i][j].y=j; } for(i=0;i =n||y>=m||node[x][y].v!=node[i][j].v) { //和之前的不一样 增加一圈失败 退出 while(!q.empty()) { //清空队列 tt=q.front(); //注意:这里要清空标志 否则wa //测试数据有2个过不去 book[tt.x][tt.y]=0; q.pop(); } break; } if(book[x][y]) //重复去除 continue; q.push(node[x][y]); book[x][y]=1; } if(z!=3) break; q.pop(); book[ne.x][ne.y]=0; } if(k==tmp) //增加一圈成功 sum++; } if(sum>re) //更新最长边 re=sum; } cout< < int s[200][200];int ispure(int x1,int y1,int w) //w为宽度 { int i,j,pure=s[x1][y1]; for(i=0;i c) m=r; else m=c; for(i=0;i
转载地址:http://mfmvi.baihongyu.com/