四阶幻方c语言编程,C语言四阶完美幻方.doc

C语言四阶完美幻方

// 四阶幻方.cpp : Defines the entry point for the console application.

/*****************************************************

* 操作系统:Windows XP *

* 编译环境:Microsoft Visual C++6.0 *

* *

* 程序编写:万传华 *

* 联系邮箱:wanchuanhua@ *

*****************************************************/

//求解幻方

// x11 x12 x13 x14

// x21 x22 x23 x24

// x31 x32 x33 x34

// x41 x42 x43 x44

//由于已知四阶幻方数量很多,总数是880*8=7040,

//故在此只求完美幻方

// x11+x12+x13+x14=34

// x21+x22+x23+x24=34

// x31+x32+x33+x34=34

// x41+x42+x43+x44=34

// x11+x21+x31+x41=34

// x12+x22+x32+x42=34

// x13+x23+x33+x43=34

// x14+x24+x34+x44=34

// x11+x22+x33+x44=34

// x14+x23+x32+x41=34

//还有泛对角线

// x21+x32+x43+x14=34

// x31+x42+x13+x24=34

// x41+x12+x23+x34=34

// x11+x24+x33+x42=34

// x12+x21+x34+x43=34

// x13+x22+x31+x44=34

//#include "stdafx.h"

#include

#include

#include

#include

#include

void show(int *M,unsigned rows,unsigned cols)

{printf("\n");

for(unsigned i=0;i

{for(unsigned j=0;j

printf("%d, ",*M++);

printf("\n");

}

printf("\n");

};

int gcd(int a,int b)

{int c;

//处理b>a的情况

if(b>a)

{c=a,a=b,b=c;

}

do

{c=a%b,a=b,b=c;

}while(c);

return a;

};

//整数型方程

//方程数FCS>1,未知数WZS>1,FCS<=WZS

//int *M ,每行一个表达式(共FCS行),共WZS+1列(加常数列)

void Equation(int *M,unsigned FCS,unsigned WZS)

{unsigned row,col,i,j,t;

int *P,*Q;//用于访问数组,指向当前操作的方程式

int x,y,z,k;

++WZS;

row=0,col=0,P=M;//参考数row,col

do

{//寻找非零参考数

t=row;Q=P;

while(Q[col]==0)

{++t;Q+=WZS;

if(t>=FCS) break;

}

if(t>=FCS)

{++col;

continue;

}

if(P!=Q)//交换

{for(j=0;j

{k=P[j];

P[j]=Q[j];

Q[j]=k;

}

}

z=P[col];//参考数位置:row行,col列

//消元

for(i=row+1,Q=P+WZS;i

{y=Q[col];

if(y==0) continue;

k=gcd(abs(z),abs(y));

x=z/k,y/=k;

for(j=0;j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值