重排九宫

supercalvin 2003-10-17 10:53:11
有没哪位高手可以赐教一个重排九宫的源代码啊?高分相送。
...全文
195 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
supercalvin 2003-10-28
  • 打赏
  • 举报
回复
主要考搜索技术,9代表空,可以把其他数移入。
danpianji2002 2003-10-21
  • 打赏
  • 举报
回复
九宫排序好像只有8个数字啊?
  • 打赏
  • 举报
回复
晕!那你干嘛不说清楚点。

题目要求实际上是考的排序算法。

任意输入 9 个数,排序,然后按格式输出。采用数组或数字结构均可。
supercalvin 2003-10-18
  • 打赏
  • 举报
回复
这些代码可以借鉴,题目的要求是任意输入九个数字,把它们排成1 2 3
4 5 6
7 8 0,这样的格式。
  • 打赏
  • 举报
回复
重排,即反其道而行之。

令 matrix[0] = num[sidelen][sidelen]; matrix[1] = num[sidelen][sidelen-1]; ……

for( k = 0; k <= sidelen * sidelen - 1; k++ )
{
用 matrix[k] 替换上述代码中的 k 。
}
danpianji2002 2003-10-18
  • 打赏
  • 举报
回复
还有其他的要求么
  • 打赏
  • 举报
回复
给你一个简单方法,只适用于基数边长。
题外——设边长为 a ,则纵行、横行及对角线元素之和为:1/2 * n * ( n*n +1) 。

(以 a = 3 为例)
做如下排列:8 1 6 可发现规律:数字依次向右上方排列,遇边缘翻转;一圈后,向下平移
3 5 7
4 9 2

一格重新开始。


部分代码如下:

cout<<"请输入纵横图边长:";
cin>>sidelen;

j = sidelen / 2;

for( k = 1; k <= sidelen * sidelen; k++ )
{
num[i][j] = k;

if( k % sidelen == 0 )
++i;
else
{
--i;
++j;
}

if( i == -1 )
i = slen - 1;
if( i == slen )
i=0;
if( j == slen )
j=0;
}

for( i = 0; i < slen; i++ )
{
for( j = 0; j < slen; j++ )
cout<<setw(4)<<num[i][j];
cout<<endl;
}
laomai 2003-10-18
  • 打赏
  • 举报
回复
数字移动的规则是什么?
hhlong 2003-10-17
  • 打赏
  • 举报
回复


bu dong!
supercalvin 2003-10-17
  • 打赏
  • 举报
回复
就是把这样的一张图,转换为123
456
780
怎么搞啊?
laomai 2003-10-17
  • 打赏
  • 举报
回复
什么意思,是输出如下的九宫图吗?
4 9 2
3 5 7
8 1 6

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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