题意:给出一个魔方的状态,求出在n次转动内最多可以成功多少个面。
思路:现场赛时,wx翻译完题目我们就知道是深搜,wx说只需要转三个面。复杂度就是(2*3)^7.当时我想着可以优化一下,一个面沿一个方向转一次后,就不要沿另一个方向转,复杂度降到6*5^6,不优化时间跑了500ms多,优化一下156ms,,
#include<stdio.h>
#include<string.h>
int mian[6][4]={0,1,2,3,16,17,18,19,4,5,10,11,8,9,14,15,6,7,12,13,20,21,22,23};//六个面的编号
int huan[3][12],color[24],ans,n;
int max(int a,int b)
{
if(a>b)r......
阅读全文