9宫问题~求高人帮忙解答下啊 不胜感激~~

来源:百度知道 编辑:UC知道 时间:2024/04/29 06:12:53
1-9,9个数字,放到一个3*3的格子里,要求无论横竖,还是斜~
相连结果都相等~~
跪求高人给个程序~~
小弟分只剩20了~ 谢谢谢谢~
一楼的大哥`~
谢谢你先
不过我是要怎么算出来的代码~~~~

#include<stdio.h>

int place(int*);

void main(void){/*九宫图算法*/

int a[9]={1,2,3,4,5,6,7,8,9};

int b[9]={0};/*表示数字的位置状态*/

int j,k,i;

for(k=0;k<=3;k++){/*对于所有比5小的数*/

b[1]=a[k];/*选一比5小的数放到第一行第二列*/

for(j=8;j>=5;j--){/*对于所有比5大的数*/

if(k!=(8-j)){/*不选择前面已选小数所对应的大数*/

b[0]=a[j];/*选一比5大的数放到第一行第一列*/

if(place(b)){/*若得到一解,则打印出*/

printf("\n 九宫图\n\n");

for(i=0;i<=8;i++){

printf(" %d ",b[i]);

if((i+1)%3==0){

printf("\n\n\n");
}

}

getch();

exit(0);

}

} /* 回溯到上一级*/

} /*回溯到根一级 */

}

}

int place(int*p){ /*计算出其他位置的数字并检测是否为所求的解*/

p[2]=15-p[0]-p[1];

p[4]=5;

p[6]=10-p[2];

p[3]=15-p[0]-p[6];