C编程玩转魔方游戏

作者: Leon_Geo | 来源:发表于2017-05-31 10:45 被阅读89次

      Hello,大家好。今天和大家分享一个趣味数学的魔方问题。相信之前,你们都玩过《某者》或寒暑假作业后面的趣味填数游戏。给你一个某种大小的矩阵(一般都是奇数3x3, 5x5, 7x7...), 每个单元取自然数,简单点的会先给你填好几个数字,要求你填出剩下的空格,使每行、每列,以及两条主对角线的和都相等。

空格最大数字为25.最小为1.填上剩余空格数字,使横纵斜之和为65

      小伙伴们,如果做不出来,看我如何让C语言帮我们快速获得结果。

       在开始编程之前,首先了解一下破解此类数独魔方游戏的"葵花宝典"☞Coxeter规则:(PS大家可以结合上图,边看边填!)

      开始时,在 魔方第一行的中间一格放 1。然后重复以下步骤:移 动到左上一格,把当前的数加 1放 在这个位置。如果移动时超 出魔方范围,则 想象与当前状态完全相同的另一个魔方,对齐紧靠在超 出的那条边界线上,因 而可以继续。如果移动到的格子 已经放置过数字,则 从这个格子的位置向正下方移动一格。直到把所有格子都放满数字为止!大家做出来了吗?

你填对了吗?

好,废话不多说。直接看Code

#include

#define MAX_SIZE 15 /* maximum size of square */

void main (void)

{  /*construct a magic square, iterativety */

int square[MAX_SIZE][MAX_SIZE] ;

int i, j, row, col; /* indexes * /

int count; /* counter * /

int size; /* square size * /

printf ( "Enter-the-size-of-the-square: -" ) ;

scanf ("%d" , &size) ;

/* check for input errors */

if (size<1 | | size>MAX_SIZE) {

fprintf (stderr ,"size  out of range\n") ;

exit (EXIT_FAILURE) ;

}

if (! (size%2)) {

  fprintf (stderr, "Error!-Size-is-even\n" );

  exit (EXIT_FAILURE) ;

}

for (i=0; i<size;i++)

  for (j=0; j<size; j++) square[i][j] = 0 ;

square[0][(size-1) /2]=1;

/* middle of first row * /

i = 0;    j = (size-1) /2;

/* i and j are curent position * /

for (count=2 ; count<=size*size; count++ ) {

row = (i-1<0) ? (size-1) : (i-1) ; /* up * /

col = (j -1<0) ? (size-1) : (j -1) ; /* lef t */

if (square [row] [col] ) i = (++i) % size;

/* down */

else { i = row; j = (j-1<0) ? (size-1) : --j; } /*square r,s unoccupied * /

square[i][j]  = count ;

}

/* output the magic square */

printf ( "Magic-square-of-size-%d:\n\n" , size) ;

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

   for (j=0; j<size;j++)

   printf("%5d   ",square[i][j]);

printf("\n");

}

printf("\n\n");

}
机器测试通过。无图无真相!

Part one Part two

相关文章

  • C编程玩转魔方游戏

    Hello,大家好。今天和大家分享一个趣味数学的魔方问题。相信之前,你们都玩过《某者》或寒暑假作业后面的趣味...

  • 网络编程

    Linux Socket编程(不限Linux) C/C++ socket编程教程:1天玩转socket通信技术 一...

  • 200行C++代码实现命令行3D魔方游戏 这效果太逼真了!

    C++ 6.0 编写的3D魔方游戏附代码,开发智力的益智小游戏。游戏界面和游戏控制是很值得学习的。这款魔方游戏玩法...

  • Shell那些事儿之30分钟玩转Shell

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 转自 C语言中文网 “30分钟玩转shell”这个...

  • Lucky Rubik's cube

    开动脑袋玩转魔方,动手动脑提升脑力。

  • 玩转魔方,开启学习

    玩转魔方,开启学习 昨天学习魔方,学会了四阶与五阶魔方,并顺利的复原六个面。总体感觉五阶魔方难...

  • 玩转魔方

    最近几天迷上了玩魔方,哈哈,以前觉得玩魔方是一件炫酷的事情,等接触了才知道原来玩魔方主要靠的不是逻辑能力而是记忆...

  • 玩转魔方

    魔方,一个有魔力的名字,看着在柜子里的它被人冷落,似乎它在哭泣。而现在我对它产生了浓厚的兴趣,坐在椅子上,...

  • C++ tips1

    C++ 语言的应用领域 嵌入式 游戏编程 网络编程 系统编程 C++ 的特点: 快,运算快 省,节省资源 C 和 ...

  • CSS3 制作魔方 - 玩转魔方

    在上一篇《CSS3 制作魔方 - 形成魔方》中介绍了一个完整魔方的绘制实现,本文将介绍魔方的玩转,支持上下左右每一...

网友评论

本文标题:C编程玩转魔方游戏

本文链接:https://www.haomeiwen.com/subject/raidfxtx.html