c语言输出魔方阵程序解释
首先魔方阵是一个奇数行列式方阵,它的一行,一列,对角线的和都相等。
建立魔方阵的第一步是确定1的位置,它是第一行的中间列,之后要确定其他位置的值,
问题1:if((i<1)&&(j>n))时,说明你确定的位置已经超出了魔方阵,所以要用i=i+2;j=j-1;把它拉回的魔方阵内,
问题2:判断第i行地j列的值是否等于0(即是否被填充),如果没填充,就填k,如果填充,再寻找下一个位置,
问题3:因为你的主函数main()前面的返回值为int,所以要提供返回值,那不是return=0,而是return 0;就是返回0,也可以返回1,这没关系的,如果不想要也行,那得把main()前面的int 改为void .
matlab?魔方矩阵的程序设计
function M = magic(n)
%MAGIC Magic square.
% MAGIC(N) is an N-by-N matrix constructed from the integers
% 1 through N^2 with equal row, column, and diagonal sums.
% Produces valid magic squares for all N > 0 except N = 2.
% Copyright 1984-2002 The MathWorks, Inc.
% $Revision: 5.15 $ $Date: 2002/04/15 03:44:23 $
% Historically, MATLAB's magic was a built-in function.
% This M-file uses a new algorithm to generate the same matrices.
n = floor(real(double(n(1))));
% Odd order.
if mod(n,2) == 1
[J,I] = meshgrid(1:n);
A = mod(I+J-(n+3)/2,n);
B = mod(I+2*J-2,n);
M = n*A + B + 1;
% Doubly even order.
elseif mod(n,4) == 0
[J,I] = meshgrid(1:n);
K = fix(mod(I,4)/2) == fix(mod(J,4)/2);
M = reshape(1:n*n,n,n)';
M(K) = n*n+1 - M(K);
% Singly even order.
else
p = n/2;
M = magic(p);
M = [M M+2*p^2; M+3*p^2 M+p^2];
if n == 2, return, end
i = (1:p)';
k = (n-2)/4;
j = [1:k (n-k+2):n];
M([i; i+p],j) = M([i+p; i],j);
i = k+1;
j = [1 i];
M([i; i+p],j) = M([i+p; i],j);
end
如何用C编写一个解魔方的程序?求高手来!
估计这种智能化的没有几个人可以编写出来。这可是一个非常大的工程。
不过我可以告诉你编写的步骤:
1.先拼好一个面的十字架,注意与临面的一致性,然后拼好一个面。
2.再拼好这个面的四个临面,用的方法是:五逆四顺或者五顺四逆。
3.再拼最后一个面的十字架,方法为:三逆三顺。
4.拼好最后一个面为同色,方法:左下右上。
5.最后是完全拼好,口诀为:逆,逆,顺,逆,逆;顺顺,顺,顺,顺;顺 顺,逆,顺,顺;顺顺,逆,逆。
用matlab做一个产生魔方阵的程序
直接调用系统的magic(n)
如果要自己写的话,我记得以前C语言的时候有写过一个。