每日算法 — 使用java实现达芬奇密码:候选排列枚举与Knuth极小极大排除
达芬奇密码(Da Vinci Code)是个纯粹的推理游戏:每人手握若干张"黑牌 +...
每日算法 — 使用java实现格格不入:位棋盘与最大独立集搜索
格格不入(Blokus)看似只是拼图,本质却是组合优化的硬骨头:每块拼板只能角对角相连,玩家要在一块 20×20 的棋盘上把 21 块异形板全部塞进去。本文用 Java...
每日算法 — 使用java实现躲避球:碰撞时刻解析求解与安全空档扫描线调度
一、躲避球真正的算法难题 躲避球看起来是"看到球就躲",但服务端 AI 必须回答一个精确的问题:在未来的 T 秒内,我移动到哪个位置,能保证尽可能晚地被击中?...
每日算法 — 使用java实现叠积木:重心判稳与调和级数最大悬挑
一、游戏规则背后的两个数学问题 叠积木(Block...
每日算法 — 使用java实现Hitori:双色约束传播与连通性分区剪枝
一、规则翻译成约束系统 Hitori("孤岛")的规则只有三条,但对求解器的要求相当刁钻:...
每日算法 — 使用java实现形色(Set):模三向量判等与位压缩DP最大分解
一、把卡牌变成 F₃ 上的向量 形色(对应英文卡牌游戏 Set)的牌面由四个独立属性构成,每个属性恰好三种取值: 属性 取值 数量 1 / 2 / 3 形状 菱形 / 波浪 / 椭圆 填充 实心...
每日算法 — 使用java实现是男人就下100层:程序化平台生成与区间最值DP最优下降路径
一、把"下落"抽象成一张有向图...
每日算法 — 使用java实现镜子迷阵:激光射线模拟与最小翻转次数搜索
镜子迷阵(Mirror Maze / Laser Puzzle)是解谜游戏里长寿的一类:棋盘上散布着固定的 / 与 \...
每日算法 — 使用java实现听歌识曲:Smith-Waterman局部比对与旋律片段定位
"听歌识曲"是每个音乐 App...