6骰子(1)

举报
用户已注销 发表于 2021/11/19 06:35:06 2021/11/19
【摘要】 智力游戏 2015年的时候,我就随便点了几下,得到 2016年6月,我在一定的规则和推理之下,进行了枚举,发现答案应该差不多只有下面这12种情况。 今天,我又编程来枚举所有的答案 代码: #include<iostream> using namespace std; ...

智力游戏




2015年的时候,我就随便点了几下,得到


20166月,我在一定的规则和推理之下,进行了枚举,发现答案应该差不多只有下面这12种情况。


今天,我又编程来枚举所有的答案

代码:

#include<iostream>
using namespace std;

int position = 51;		//position=10*i+j表示的是第i行第j列的位置
int direction[8] = { -10, 10, -1, 1, -11, -9, 11, 9 };	//8个方向,数字代表的是每次移动的时候position的增量
int number[7][7] = {		
	0, 0, 0, 0, 0, 0, 0,		
	0, 1, 3, 6, 5, 9, 0,
	0, 4, 5, 4, 3, 5, 0,
	0, 1, 3, 5, 3, 2, 0,
	0, 2, 1, 5, 3, 4, 0,
	0, 3, 5, 4, 2, 6, 0,
	0, 0, 0, 0, 0, 0, 0 };

int i1, i2, i3, i4, i5, i6;
int i[7];

bool ok()
{
	int sum = 0;
	position = 51;
	i[1] = i1, i[2] = i2, i[3] = i3, i[4] = i4, i[5] = i5, i[6] = i6;
	while (sum < 25)
	{
		int x = position / 10, y = position % 10;
		if (number[x][y] == 0)return false;
		if (number[x][y] == 9)return true;
		position += direction[i[number[x][y]]];	//
		sum++;
	}
	return false;
}

void out()
{
	position = 51;
	cout << endl;
	while (true)
	{
		int x = position / 10, y = position % 10;
		cout << position << "  ";
		if (number[x][y] == 9)return;
		position += direction[i[number[x][y]]];	
	}
}

void move()
{
	for (i1 = 0; i1 < 8;i1++)
	for (i2 = 0; i2 < 8;i2++)
	for (i3 = 0; i3 < 8;i3++)
	for (i4 = 0; i4 < 8; i4++)
	{
	if (i1 == i2 || i1 == i3 || i1 == i4 || i2 == i3 || i2 == i4 || i3 == i4)continue;
		for (i5 = 0; i5 < 8; i5++)
		{
			if (i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5)continue;
			for (i6 = 0; i6 < 8; i6++)
			{
			if (i1 == i6 || i2 == i6 || i3 == i6 || i4 == i6 || i5 == i6)continue;
			if (ok())out();
			}
		}
	}
}

int main()
{
	move();
	cout << "end";
	system("pause>nul");
	return 0;
} 

输出的有重复的,利用word的查找和替换功能可以轻松找出所有的不同的行,如下

51  42  32  23  24  15
51  42  32  23  34  25  24  15
51  42  43  32  23  13  24  15
51  42  43  33  23  34  25  15
51  42  53  43  44  35  24  15
51  42  32  23  33  44  35  24  15
51  42  52  53  43  44  35  24  15
51  41  32  22  23  34  24  14  15
51  42  32  23  34  25  35  24  15
51  41  52  53  44  34  24  14  15
51  42  53  54  44  35  25  24  15
51  42  53  54  43  33  23  24  15
51  52  42  33  23  34  35  24  25  15
51  41  52  53  42  33  34  24  14  15
51  52  42  33  23  12  13  24  25  15
51  41  32  22  23  33  34  24  14  15
51  42  32  23  22  33  44  35  24  15
51  52  42  33  23  22  12  13  24  25  15
51  52  42  41  32  33  23  12  13  24  25  15

一共有19种

我验证了一下,这19组全部是正确的。

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/52818876

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。