2014年12月22日 星期一

[C/C++ 演算法]-資料結構與演算法(文魁):魔術方塊的演算法(在方陣中橫、豎、斜線的值都一樣)

[C/C++ 演算法]-資料結構與演算法(文魁)魔術方塊的演算法(在方陣中橫、豎斜線的值都一樣



 


線上執行結果:http://www.tutorialspoint.com/compile_c_online.php


 


/* =========== Program Description ========= */
/* 程式名稱 : 4_3.cpp */
/* 演算法名稱:魔術方塊的演算法 */
/* 輸入:一個的整數陣列 */
/* 輸出:以照魔術方塊的規則填入資料的整數陣列*/
/* ========================================= */

#define n 3

// 宣告標頭檔
#include "stdio.h"

// 宣告函式原型

// 利用傳址的方式把Array M傳進square函式中
void square(int *M);

void main(void)
{
int M[n][n]={0};
int i,j;
square(&M[0][0]);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("M[%d][%d] = %2d",i,j,M[i][j]);
printf("\n");
}

getchar();
}

void square(int *M)
{
int i,j,p,q,k;

i=0;
j=(n-1)/2;
M[i*n+j]=1;

for(k=2;k<=n*n;k++)
{

p=(i-1+n)%n;
q=(j-1+n)%n;

if(M[p*n+q]>0)
{
i=(i+1)%n;
k--;
}else {
i=p ;
j=q;
M[i*n+j]=k;
}
}
}
















 






沒有留言:

張貼留言