Win2000的空当接龙算法

myblind myblind 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下代码是反汇编 freecall 得到的代码。有需要的同志看看 :) 。
没有给出 -1 和 -2 局的算法,因为这两局是固定的,而且无解的牌局。

int gameNum = 1; // 牌局号
int cards[168], order[53];
int i,j,k;

for (i=0; i<168; i++)
cards[i] = -1;
for (i=0; i<=52; i++)
order[i] = i;

srand(gameNum);
for (i=0; i<52; i++)
{
j = rand() % order[52];
k = i/8 + (i & 7) * 21;
cards[k] = order[j];
order[j] = order[52-i-1];
--order[52];
}

for (i=0;i<168;i++)
{
if (cards[i] == -1)
printf("%-10d", -1);
else
{
k = ((cards[i]+1 % 13)+3) / 4;
k = k?k:13; // 计算牌面大小
printf("%-2d(%-2X) ", k, cards[i]);
}
}

牌的存储结构你可以通过打印出列表,对照着 freecall 游戏看的很清楚。

虽然得到了源代码,我却仍然不明白这样为什么会使牌局有解。:(
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
myblind
数据结构与算法 33,026 成员 35,334 内容