bfs+剪枝。
如果某个钟表状态在之前出现过那么就不需要再加入到队列中了。由于不会哈希所以开了个9维数组判重。
之前因为路径数组和clock数组合并在一起写了,结果一直内存超限。
这个题因为clock里面有个长度是10的数组所以在用路径的时候这个数组是没用的,所以这俩东西应该分开写。
总之这个WA,TLE,RE了N次。
/*
ID:kkkwjx1
LANG:C++
TASK:clocks
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <string>
using namespace std;
struct Clocks
{
int clo[10];
int id;
};
struct Path
{
int id,pre,op;
};
void Move(int n,Clocks &p)
{
p.clo[n]+=3;
if(p.clo[n]>12) p.clo[n]=3;
}
void Change(int n,Clocks &p)
{
if(n==1)
{
Move(1,p);
Move(2,p);
Move(4,p);
Move(5,p);
}
else if(n==2)
{
Move(1,p);
Move(2,p);
Move(3,p);
}
else if(n==3)
{
Move(2,p);
Move(3,p);
Move(5,p);
Move(6,p);