高分悬赏推九宫

qjwj_hl 2001-11-25 11:20:45
问题是将一下形式
0 5 2
7 3 6
1 4 8

最终移到这种形式
1 2 3
8 0 4
7 6 5
只要有满意的答案一定给分
...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qjwj_hl 2001-11-27
  • 打赏
  • 举报
回复
jhhxxdj:虽然你的东西有点不贴边!
可是好象没有别的高手来回答了!
算你走运
jhhxxdj 2001-11-27
  • 打赏
  • 举报
回复
#include<stdio.h>
int a[]={0,1,2,5,8,7,6,3};
int b[9];
int c[9];
int count=0;
main()
{
int i,j,k,t;
void print();
printf("Please enter original order of digits 1~8: ");
for(i=0;i<8;i++)
scanf("%d",&b[a[i ] ]);
printf("The sorting process is as felow:\n");
print(); //输出初始矩阵
for(t=-1,j=0;j<8&&t==-1;j++)//确定1所在的位置
if(b[a[j] ]==1)t=j; //t记录1的位置
for(j=0;j<8;j++) //把1的位置定为环首
c[j]=a[(j+t)%8];
for(i=2;i<9;i++) //从2开始依次调整数字
//i正确的位置是i-1
for(j=i-1;j<8;j++)
if(b[c[j]]==i&&j!=i-1)
{
b[4]=i;
b[c[j] ]=0; //空出来的位置为0
print();
for(k=j;k!=i-1;k--)
{
b[c[k] ]=b[c[k-1] ];
b[c[k-1] ]=0;
print();
}
b[c[k] ]=i;
b[4]=0;
print();
break;
}
else if(b[c[j] ]==i)break;
}

void print(void)
{
int c;
for(c=0;c<9;c++)
if(c%3==2)printf("%2d\n",b[c]);
else printf("%2d",b[c]);
printf("---%2d---\n",count++);
}
Kaye 2001-11-25
  • 打赏
  • 举报
回复
好像很多人工智能书上都有说,最终变成了图的遍历,没好好学,有点后悔
qjwj_hl 2001-11-25
  • 打赏
  • 举报
回复
我会加贴给分的!!我以为就我菜呢!哈哈

69,371

社区成员

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

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