九宫图 求解问题

小曦子 2009-04-25 03:41:44

/// <summary>
/// 判断是否可以从初始状态到达目标状态(计算两个状态的逆序列,奇偶性相同的返回true)
/// </summary>
/// <param name="start">初始状态</param>
/// <param name="end">目标状态</param>
/// <returns></returns>
private bool ExistAns(int[] start, int[] end)
{
int sequence_start = 0, sequence_end = 0;
for (int i = 0; i < start.Length; i++)
{
if (start[i] != 0)
for (int j = i + 1; j < start.Length; j++)
{
if (start[j] != 0 && start[j] < start[i])
sequence_start++;
}
if (end[i] != 0)
for (int j = i + 1; j < start.Length; j++)
{
if (end[j] != 0 && end[j] < end[i])
sequence_end++;
}
}
return (sequence_start + sequence_end) % 2 == 0;
}


九宫图有没有存在无解的问题,我在网上看到有些九宫图代码会有这段代码来判别?是不是真的存在无解的问题??
...全文
155 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
superhackerzhang 2009-04-26
  • 打赏
  • 举报
回复
逆序数的概念自己查吧。
1,2,3,4,5,6,7,8,0.这个序列的逆序数为0(都不算0的逆序数)
2,1,3,4,5,6,7,8,0.这个序列的逆序数为1(都不算0的逆序数)
你看看这两个状态是否可以互达。

因为在九宫问题中,移动空格的位置(也就是0),前后逆序数的奇偶性不变,所以说奇偶性不同的状态不可互达。
qq675927952 2009-04-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 superhackerzhang 的回复:]
当然存在,如果开始状态与目标状态的逆序数的奇偶性相同则可达,否则不可达。
[/Quote]

up ,这可能要数学 证明吧,不会,只知道结论。。
小曦子 2009-04-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 superhackerzhang 的回复:]
当然存在,如果开始状态与目标状态的逆序数的奇偶性相同则可达,否则不可达。
[/Quote]
为什么会存在,可是如果用一张图片切割成九张图片然后拼结而成,可是好象都可以成功的
superhackerzhang 2009-04-25
  • 打赏
  • 举报
回复
当然存在,如果开始状态与目标状态的逆序数的奇偶性相同则可达,否则不可达。
小曦子 2009-04-25
  • 打赏
  • 举报
回复
来看帮忙 解决一个呀
小曦子 2009-04-25
  • 打赏
  • 举报
回复
来看帮忙一下呀,真的很急的呀

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧