1 条题解
-
1
题解
只要是奇数步,就不能停留在原位,要是把整个迷宫划分成国际棋盘的黑白格,那么奇数步必然只能转移到异色格上, 注意到这点而且题目是 ,只需注意随时保持还没被染色的在一块大联通域里面就行了,(要是被孤立了那么玩家就不能再走,魔术师就算是没有完成魔术,要是多个区块就不知道玩家到底在哪个区块了,这样无法消除到只有一个含一块的区块) 这里为了保证这一点我使用的是从外向里,每次推一层的方法,假设出发点是白格(计算中使用了二维坐标,结果转化为) 对于里面的第层,先消去上一层层未涂色的白格,再消去层可以消去的白格(相邻的黑格都有两个及以上个没有被消去的白格相邻),最后新建一个操作,消去层的所有黑格(这时候层的白格不会受影响,因为还有层)
标程
#include <iostream> #include <cstdio> using namespace std; int main() { int n; cin >> n; int t = 0; int i, j; // 提前声明循环变量 for (i = 1; i <= n; i++) { cout << 2 * n + 1 + t * 2 << " "; t++; for (j = 0; j < i; j++) { cout << i + (n - 1) * j << " "; } cout << endl; } for (i = 2; i < n; i++) { cout << 2 * n + 1 + t * 2 << " "; t++; for (j = 0; j <= (n - i); j++) { cout << i * n + (n - 1) * j << " "; } cout << endl; } return 0; }
- 1
信息
- ID
- 711
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者