考察抽象思维的一道题目,对各个方向进行编号,从w方向开始,将该方向编号为0,逆时针加1作为每个方向的编号,这样就可以保证对于编号i,1<<i也就满足对应方向的对应权值,然后从起始点开始,对于每个方向,判断这个方向是否存在障碍物,如果是存在障碍物的,那么就继续判断是否存在两个连续的障碍物,如果不是,那么就“移动”该障碍物,这个移动反映到数学上,也就是更新各个格子的数值,然后再递归判断,如果没有障碍物,就直接递归判断就行了,最后打印结果,具体实现见如下代码:
#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<deque>
#include<functional>
using namespace std;
int x, y;
int area[10][10];
const string dir = "WNES";
int dx[] = {0,-1,0,1};
int dy[] = {-1,0,1,0};
int