恕我直言题解区的做法都弱爆了
查看原帖
恕我直言题解区的做法都弱爆了
1403747
Madokaaa楼主2024/12/18 14:37

这是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,甩开一众题解几条街,但是人不知所踪。求大神解释这代码什么意思???

2024/12/18 14:37
加载中...