#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <stack>
#include <string>
#include <string.h>
#include <stdio.h>
#include <cmath>
#include <map>
#include <functional>
#include <set>
#include <limits.h>
#include <math.h>
#include <ctype.h>
using namespace std;
//1091
int mp[6][6];
bool mark[6][6];
int k,sx,sy,ex,ey,sum,sta,mi;
int go[][2]={{-1,0},{1,0},{0,-1},{0,1}};
void dfs(int sx,int sy,int sum,int sta)
{
if(sum<mi)
{
if(sx==ex && sy==ey){
mi=sum;
return;
}
for(int i=0;i<4;i++)
{
int tx=sx+go[i][0],ty=sy+go[i][1];
if(tx>=0 && tx<6 && ty>=0 && ty<6 && !mark[tx][ty])
{
mark[tx][ty]=true;
int t= mp[tx][ty]*sta;
dfs(tx,ty,sum+t,t%4+1);
mark[tx][ty]=false;
}
}
}
}
int main(){
//freopen("input.txt","r",stdin);
cin>>k;
while(k--)
{
for(int i=0;i<6;i++)
for(int j=0;j<6;j++)
{
cin>>mp[i][j];
mark[i][j]=false;
}
cin>>sx>>sy>>ex>>ey;
mi=123123123;
dfs(sx,sy,0,1);
cout<<mi<<endl;
}
return 0;
}
/**************************************************************
Problem: 1091
User: cust123
Language: C++
Result: Accepted
Time:10 ms
Memory:1520 kb
****************************************************************/
题目1091:棋盘游戏
最新推荐文章于 2022-03-09 00:23:38 发布