九宫格为问题
来源:互联网 发布:银川善知律师事务所 编辑:程序博客网 时间:2024/05/17 03:45
在《射雕英雄传》中黄蓉曾破解九宫格,口诀:戴九履一,左三右七,二四有肩,八六为足,五居中央。
有口诀的!!
一居上行正中央,依次斜填莫相忘,上出框时向下放,右出框时向左放,排重编在下格放,右上排重一个样。
「重排九宫」有两种玩法:
第一种是在在3×3方格盘上,是把1至8八个小木块随意摆放,每一空格其周围的数字可移至空格。玩者要将小木块按12345678的顺序重新排好,以最少的移动次数拼出结果者为胜。
第二种玩法如九宫格算术游戏玩法,推动木格中8个数字排列,横竖都有3个格,使每行、每列两个对角线上的三数之和都等于15。在计算的同时,还必须思考怎么把数字方块推动到相对应的位置上,这个游戏不仅仅考验人的数字推理能力,也同时考验了人的思维逻辑能力。
针对奇数阶数的幻方填写方法:
注意:二维数组指针的创建和释放。
#include<iostream>#include<cstring>#include<iomanip>using namespace std;int main(){ int n; cin>>n; cout<<endl; int **a=new int*[n]; for(int i=0;i<n;i++) { a[i]=new int [n]; memset(a[i],0,n*sizeof(int)); } int r=0; int l=n/2; for(int i=1;i<=n*n;i++) { a[r][l]=i; r--; l++; if(r<0&&l>=n) { r+=2; l--; } else if(r<0) { r=n-1; } else if(l>=n) { l=0; } else if(a[r][l]!=0) { l--; r+=2; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cout<<setw(4)<<a[i][j]; } cout<<endl; } for(int i=n;i>0;) { delete[] a[--i]; } delete[] a; return 0;}