这是chenyufeng040525的全站最优解
#include<stdio.h>
int n,a[8];char s[27];
static inline void f(int i,int j){
int m= ~j&&j+5<24? j+5:24;
if(i++==7){
for(m=0;--i;)
m|=1<<a[i];
for(j=1<<a[1]; j^i&&j^m; j|=(j<<1&0x1ef7bde|j>>1&0xf7bdef|j<<5|j>>5)&m)
i=j;
j^i&&n++;
}else{
for(;j++^m;)
s[j]^72?
f(i,a[i]=j)
:
*a^3?
++*a,f(i,a[i]=j),--*a
:
0;
}
}
int main()
{
for(;n^5;)scanf("%s",s+n++*5);
f(n=0,-1),printf("%d",n);
return 0;
}
原代码更抽象一点,我整理了一下,虽然三目运算符拆开无法编译但是好看点。但是我一个字都看不懂!感觉C语言白学了。他只用了42ms,甩开一众题解几条街,但是人不知所踪。求大神解释这代码什么意思???