这两天UVa一直抽风。。。逼的我只能去HDU交了。。
这破题做了一整天
结论就是坑爹水题纯模拟
最后wa了十来次逼的我去网上找正确代码对拍。。。结果发现数组下标写错了。。。唉
功力不行啊。。。写的太长。。。也没啥心情简化了。。。就这样吧
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long using namespace std; int dir[4][2]={ {0,-1},{-1,0},{1,0},{0,1} }; int hx[] = { -2, -1, -2, -1, 1, 2, 1, 2}; int hy[] = { -1, -2, 1, 2, -2, -1, 2, 1}; int dx[] = { -1, -1, -1, -1, 1, 1, 1, 1}; int dy[] = { -1, -1, 1, 1, -1, -1, 1, 1}; int check(int x,int y) { if(x>=1&&x<=3&&y>=4&&y<=6) return 1; else return 0; } int n,x,y; int board[15][15]; int cr[2], cc[2]; bool ju(int tx,int ty,int x,int y)///tx,ty是将的位置,x,y是红方棋子的位置 { if((tx==x&&ty==y)||(tx!=x&&ty!=y)) return 1; else if(tx==x) { int i,flag=1; for(i=min(ty,y)+1;i10||tty<1||tty>9) continue; if(board[ttx][tty]==2&&(!board[x+dx[i]][y+dy[i]])) return 0; } return 1; } bool jiang(int tx,int ty,int x,int y) { if(ty==y) { int flag=1; for(int i=tx+1;i=4) printf("YES\n"); else printf("NO\n"); } return 0; }