【题解】P8700 题解
P8700 题解
思路分析
这道题是周期分析。
由于操作是三个圈一起操作,因此肯定是有周期的。
外圈有 个,中圈有 个,内圈有 个。
于是以下的这几个就一定“绑定的”,即无论如何转来转去,调整来调整去,一定就是这几个颜色,不会变化。
-
灰色道子上的那三个
-
中圈最下面的那个(横着的)
-
外圈最上面的那个位置往顺时针数 个棒,逆时针过 个棒。
然后判断是否存在 个外圈色(即绿), 个中圈色(即红),个内圈色(即黄)即可,因为对于每一组“绑定的”棒,在外圈有 个,在中圈有 个,在内圈有 个。
代码
for(int i = 0;i < 4;i++)
{
memset(csp, 0x0, sizeof(csp)); //要清空
//统计外圈上的
csp[a[i]]++;
csp[a[i + 4]]++;
csp[a[i + 8]]++;
//统计中圈上的
csp[b[i]]++;
csp[b[i + 4]]++;
//统计内圈上的
csp[c[i]]++;
if(csp['Y'] != 1 || csp['R'] != 2 || csp['G'] != 3) //判断是否符合条件
{
cout << "NO" << endl;
ok = false;
break;
}
}
if(ok) cout << "YES" << endl;

浙公网安备 33010602011771号