5.16魔幻方阵

Q:魔幻方阵指在n*n的矩阵中填写1~n*n这些数字,使得每行每列以及两个对角线之和均相等。编写一个程序,打印出一种三阶的魔幻方阵。

思路一:

//用来判断i~q是否互不相等

int match(int i,int j,int k,int l,int m,int n,int o, int p,int q) {
	if(i!=j && i!=k &&i!=l&&i!=m &&i!=n &&i!=o && i!=p &&i!=q
		&& j!=k &&j!=l && j!=m &&j!=n &&j!=o &&j!=p &&j!=q
		&& k!=l &&k!=m &&k!=n && k!=o &&k!=p &&k!=q && l!=m &&
		l!=n &&l!=o &&l!=p &&l!=q &&m!=n &&m!=o &&m!=p &&m!=q
		&& n!=o &&n!=p && n!=q &&o!=p &&o!=q &&p!=q)
		return 1;
	else	return 0;
}

//用来判断i~q这种排列是否满足魔幻方阵的要求

int just(int i,int j,int k,int l,int m,int n,int o, int p,int q) {
	if(i+j+k==l+m+n &&i+j+k==o+p+q &&i+l+o==j+m+p &&i+l+o==k+n+q
	 &&i+m+q==k+m+o)
	 	return 1;
 	else return 0;
}

下面再弄 暴力循环。

思路二:DFS深度优先搜索也行!

时间: 2024-10-13 02:23:23

5.16魔幻方阵的相关文章

c语言各类问题 代码

定义一个结构体,有两个成员变量,一个整型的n,一个字符型的c,利用结构体类型声明一个具有5个元素的数组,并随机初始化,根据成员变量n进行从小到大排序,然后输出 冒泡排序然后 在输出结构体#include<stdio.h>struct d{int x;char y;};int main(void){struct d a[5];int i,d;int b[6]; for(i=0;i<5;i++){scanf("%d%c",&a[i].x,&a[i].y);

MATLAB2014a中help与参考页中文翻译 Tutorials- array indexing

镇场诗:慈心积善,为有缘人做大证明.以身作则,光照大千世界. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Array Indexing  数组索引 Every variable in MATLAB? is a

便是见到前方那

以可得量力而凌厉刀芒横扫http://weibo.com/2015.09.16/p/1001603887144312655250http://weibo.com/2015.09.16/p/1001603887144321088567http://weibo.com/2015.09.16/p/1001603887144325238274http://weibo.com/2015.09.16/p/1001603887144325282921http://weibo.com/2015.09.16/p/

对于这黑马之会

是想不出究竟还只是区区一角啊http://weibo.com/2015-09.16/p/1001603887574727917787http://weibo.com/2015-09.16/p/1001603887574727946828http://weibo.com/2015-09.16/p/1001603887574732112097http://weibo.com/2015-09.16/p/1001603887574732112103http://weibo.com/2015-09.16/

复旦大学2016--2017学年第二学期(16级)高等代数II期末考试第七大题解答

七.(本题10分)  设 $n$ 阶复方阵 $A$ 的特征多项式为 $f(\lambda)$, 复系数多项式 $g(\lambda)$ 满足 $(f(\lambda),g'(\lambda))=1$. 证明: $A$ 可对角化的充要条件是 $g(A)$ 可对角化. 证明  先证必要性. 设 $A$ 可对角化, 即存在非异阵 $P$, 使得 $P^{-1}AP=\Lambda=\mathrm{diag}\{\lambda_1,\lambda_2,\cdots,\lambda_n\}$ 为对角阵,

PAT - IO - 螺旋方阵

所谓“螺旋方阵”,是指对任意给定的N,将1到N*N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入NxN的方阵里.本题要求构造这样的螺旋方阵. 输入格式: 输入在一行中给出一个正整数N(<10). 输出格式: 输出NxN的螺旋方阵.每行N个数字,每个数字占3位. 输入样例: 5 输出样例: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 实现: #include "stdafx.h" #de

Luogu P1101 单词方阵

明明是一道水题,我还找不出 bug 来...原本在 DFS 途中记录单词串,只好使用笨方法,在结尾加一个 for 记录单词串.终于过了. 思路:枚举图中每一个点进行 DFS,途中判断访问的点是否为连续元素("yizhong"字符串中连续),如果不是返回:进行下一层 DFS,如果返回值 True 则直接层层返回 True,强行退出. 1 /* P1101 单词方阵 2 * Au: GG 3 */ 4 #include <cstdio> 5 #include <cstdl

方阵求值——上三角行列式、定义(康拓展开求值)

Problem:求方阵A的值. 设求n*n的矩阵:加法的操作次数为P(n),乘法的操作次数与为M(n). 对于方法1: j1~jn共有n!种选法:j1有n种选法,j2有n-1种选法,-,jn有1种选法. P(n)=n!-1 M(n)=n!*(n-1) 对于方法2: P(1)=0 P(2)=2 P(n)=(n-1)+n*P(n-1)=(n-1)+(n-2)+n*(n-1)*P(n-2)=-=(n-1)+(n-2)+-+2+n*(n-1)*-*3*P(2) =(n+1)*(n-2)/2+n!    

数组-13. 螺旋方阵

1 /* 2 * Main.c 3 * E13-数组-13. 螺旋方阵 4 * Created on: 2014年8月25日 5 *******测试通过*********** 6 * 7 */ 8 9 #include <stdio.h> 10 11 int main(void) { 12 13 int array[11][11]; 14 int n; //题目中的N 15 16 scanf("%d", &n); 17 18 int upBound = 0; //上