该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//   穷举法打印n阶魔方矩阵 n <= 10

#include

#include

int A[ 11 ][ 11 ];

bool Flag[ 101 ];    //若K已被使用则Flag[k]=true,否则为false

int n = 3 ,Count = 0 ,Point = 0 , Avr = 0 ;

int i_g = 1 , j_g = 1 , k_g = 1 ;

bool i_change = false ;

bool j_loop = false , k_loop = false ;

/funtion init( )

void init( )    // 对变量初始化

{

for ( int i = 1; i <= n; i ++ )

for ( int j = 1; j <= n; j ++ )

{

A[ i ][ j ] = 0;

Flag[ j + ( i - 1 ) * n ] = false;

}

Count = n * n;    // 矩阵的变量数

Point = n / 2 ;   // 设置判断点

for ( i = 1 ; i <= Count ; i ++ )

Avr += i ;

Avr /= n ;      // 矩阵每行每列之和必须 = Avr

}

funtion Sum( )

int Sum ( int j , bool row )

{

int total = 0 ;

if ( row == true )    // 返回 j个数的最大之和(末被使用的)

for ( int k = Count ; j ; k -- )

{

if ( ! Flag[ k ] )

{

total +=  k ;

j -- ;

}

}

else if ( row == false )  // 返回 j个数的最小之和......

for ( int k = 1 ; j ; k ++ )

{

if ( ! Flag[ k ] )

{

total += k ;

j -- ;

}

}

return Avr - total;

}

/function Test( )

bool Test ( int i, int j )   //测试A[i][j]是否可行,可行返回true,否则false

{

int temp ;

if ( j > Point )

{

temp = 0 ;

for ( int k = j ; k >= 1 ; k -- )

temp += A[ i ][ k ] ;      //计算第i行元素之和(被使用的)

if ( j == n && temp != Avr )

return false ;

else if (j != n && ( temp  Sum ( n - j , false ) ) )

return false;

}

if ( i > Point )

{

temp = 0 ;

for ( int k = i ; k >= 1 ; k -- )

temp += A[ k ][ j ] ;   // 计算第j列元素之和(被使用的)

if ( i == n && temp != Avr )

return false ;

else if ( i != n && ( temp  Sum ( n - i , false ) ) )

return false;

}

temp = 0 ;

if ( i == n && j == 1 )  //  A[i][j]为左下角的元素

{

for ( int a = i , b = j ; a >= 1 ; a -- , b ++ )

temp += A[ a ][ b ] ;  //  计算左斜线的元素之和(已全部使用)

if ( temp == Avr )

return true ;

else

return false ;

}

if ( i == n && j == n ) //  A[i][j]为右下角的元素

{

for ( int a = i , b = j ; a >= 1 ; a -- , b -- )

temp += A[ a ][ b ] ;    //  计算右斜线的元素之和(已全部使用)

if ( temp == Avr )

return true ;

else

return false ;

}

temp = 0 ;

if ( i == j )

{

for ( int a = i , b = j ; a >= 1 ; a -- , b -- )

temp += A[ a ][ b ] ;    //  计算右斜线的元素之和(被使用的)

if ( temp  Sum ( n - i , false ) )

return false;

}

temp = 0 ;

if ( i + j == n + 1 )

{

for ( int a = i , b = j ; a >= 1 ; a -- , b ++ )

temp += A[ a ][ b ] ;    //  计算右斜线的元素之和(被使用的)

if ( temp  Sum ( j - 1 , false ) )

return false;

else

return true ;

}

return true ;

}

/function back()

bool back ( )    // 进行回溯

{

if ( j_g == 1 )

{

j_loop = false ;

Flag[ A[ i_g - 1 ][ n - 1 ] ] = false ;

Flag[ A[ i_g - 1 ][ n ] ] = false ;

c语言验证5阶魔方矩阵,穷举法打印n阶魔方矩阵相关推荐

  1. 用c语言验证5阶魔方矩阵,穷举法打印n阶魔方矩阵

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //   穷举法打印n阶魔方矩阵 n <= 10 #include #include int A[ 11 ][ 11 ]; bool Flag[ 1 ...

  2. n阶魔方的构成方法C语言,穷举法打印n阶魔方矩阵

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //   穷举法打印n阶魔方矩阵 n <= 10 #include #include int A[ 11 ][ 11 ]; bool Flag[ 1 ...

  3. 《C语言及程序设计》实践项目——穷举法解题

    返回:贺老师课程教学链接 说明:穷举法在有些时候,并不是一种最有效率的解决方案,但却是最直观的.初学者依靠这一组问题的解决,将获得程序设计的最直接体验,以及会想问题的头脑. [项目1-小明借书] 小明 ...

  4. C语言程序设计之编程求鸡和兔的只数,用穷举法解决

    CSDN论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同.两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5.编程求鸡和兔的只数是多少?它们的脚数各是多少? C语言 ...

  5. c语言变量相等问题穷举法,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

  6. java穷举法解方程_枚举法(穷举法)_Java语言程

    枚举法(穷举法)_Java语言程 3.5.1 枚举法(穷举法) 枚举法就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. [例3-20] 百元买百鸡:用一百元钱买一百只鸡.已知公鸡5元/ ...

  7. c语言穷举法举例,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

  8. c语言穷举算法 枚举法,c语言枚举法(穷举法).ppt

    c语言枚举法(穷举法) 枚举法(穷举法) "笨人之法": 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. 百元买百鸡问题分析 百元买百鸡问题分析 优化 继续优化 利用 ...

  9. c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

    枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为 ...

  10. 穷举法求最大公共子序列C语言,算法--最长公共子序列(LongestCommon Subsequence, LCS)...

    定义: 两个字符串共有的最长的子序列(可不连续),最长公共字符串(Longest CommonSubstring)是两个字符串共有的最长的连续字符串. 方法:穷举法,动态规划 动态规划法的简介: &l ...

最新文章

  1. 函数、返回-Sql Server常用函数之统计、算数、字符串函数-by小雨
  2. BZOJ 3489: A simple rmq problem(K-D Tree)
  3. C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...
  4. graph面板x轴模式包括哪些_发那科数控车床面板讲解
  5. iOS博客 视频课程网站
  6. android 统一错误处理,Android 程序错误处理全局处理
  7. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(3) - 8086/16位指令前缀
  8. 最短路径 一 Dijkstra 模板(O(n^2))
  9. bcc挖矿用什么_IPFS挖矿与传统传统挖矿的区别
  10. Linux设备驱动——PCI总线的初始化
  11. C语言打印斐波那契数列
  12. jdk动态代理的实现流程(事务处理)
  13. 《测绘管理与法律法规》——测绘质量管理体系
  14. java混淆工具zelix比较_Java逆向基础之混淆器
  15. 如何区分字母大写I小写字母l以及数字1
  16. 计算机科学家与科学之路----2000年图灵奖得主美籍华人姚期智院士特邀报告
  17. 中山大学曾兆阳_实习派 | 曾兆阳: “宝藏男孩”的进阶之路
  18. matlab归一化和标准化
  19. 三菱FX5U系列PLC模拟量使用方法及相关参数设置
  20. 2021-2027全球与中国波本威士忌市场现状及未来发展趋势

热门文章

  1. JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。
  2. java jsp考试试题_JSP测试题一
  3. java 怎么把日期格式化时间_如何实现java日期格式化?
  4. 5gwifi信道哪个最好,wifi信道在哪里设置如何检测哪个路由器信道最快
  5. CrossMap基因坐标转换:hg38和hg37互换
  6. 环境试验之单臂跌落试验机操作规程
  7. 监狱视频探视(会见)系统
  8. 离散数学第六版第er章偶数题答案_离散数学答案第二章习题解答
  9. 华硕固件Linux-arm,AC86UASUS固件交叉编译的问题
  10. Git下载与安装 Windows