c语言验证5阶魔方矩阵,穷举法打印n阶魔方矩阵
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
// 穷举法打印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阶魔方矩阵相关推荐
- 用c语言验证5阶魔方矩阵,穷举法打印n阶魔方矩阵
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 // 穷举法打印n阶魔方矩阵 n <= 10 #include #include int A[ 11 ][ 11 ]; bool Flag[ 1 ...
- n阶魔方的构成方法C语言,穷举法打印n阶魔方矩阵
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 // 穷举法打印n阶魔方矩阵 n <= 10 #include #include int A[ 11 ][ 11 ]; bool Flag[ 1 ...
- 《C语言及程序设计》实践项目——穷举法解题
返回:贺老师课程教学链接 说明:穷举法在有些时候,并不是一种最有效率的解决方案,但却是最直观的.初学者依靠这一组问题的解决,将获得程序设计的最直接体验,以及会想问题的头脑. [项目1-小明借书] 小明 ...
- C语言程序设计之编程求鸡和兔的只数,用穷举法解决
CSDN论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同.两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5.编程求鸡和兔的只数是多少?它们的脚数各是多少? C语言 ...
- c语言变量相等问题穷举法,C语言穷举法经典例题.ppt
<C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...
- java穷举法解方程_枚举法(穷举法)_Java语言程
枚举法(穷举法)_Java语言程 3.5.1 枚举法(穷举法) 枚举法就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. [例3-20] 百元买百鸡:用一百元钱买一百只鸡.已知公鸡5元/ ...
- c语言穷举法举例,C语言穷举法经典例题.ppt
<C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...
- c语言穷举算法 枚举法,c语言枚举法(穷举法).ppt
c语言枚举法(穷举法) 枚举法(穷举法) "笨人之法": 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. 百元买百鸡问题分析 百元买百鸡问题分析 优化 继续优化 利用 ...
- c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件
枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为 ...
- 穷举法求最大公共子序列C语言,算法--最长公共子序列(LongestCommon Subsequence, LCS)...
定义: 两个字符串共有的最长的子序列(可不连续),最长公共字符串(Longest CommonSubstring)是两个字符串共有的最长的连续字符串. 方法:穷举法,动态规划 动态规划法的简介: &l ...
最新文章
- 函数、返回-Sql Server常用函数之统计、算数、字符串函数-by小雨
- BZOJ 3489: A simple rmq problem(K-D Tree)
- C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...
- graph面板x轴模式包括哪些_发那科数控车床面板讲解
- iOS博客 视频课程网站
- android 统一错误处理,Android 程序错误处理全局处理
- Intel 64/x86_64/IA-32/x86处理器 - 指令格式(3) - 8086/16位指令前缀
- 最短路径 一 Dijkstra 模板(O(n^2))
- bcc挖矿用什么_IPFS挖矿与传统传统挖矿的区别
- Linux设备驱动——PCI总线的初始化
- C语言打印斐波那契数列
- jdk动态代理的实现流程(事务处理)
- 《测绘管理与法律法规》——测绘质量管理体系
- java混淆工具zelix比较_Java逆向基础之混淆器
- 如何区分字母大写I小写字母l以及数字1
- 计算机科学家与科学之路----2000年图灵奖得主美籍华人姚期智院士特邀报告
- 中山大学曾兆阳_实习派 | 曾兆阳: “宝藏男孩”的进阶之路
- matlab归一化和标准化
- 三菱FX5U系列PLC模拟量使用方法及相关参数设置
- 2021-2027全球与中国波本威士忌市场现状及未来发展趋势
热门文章
- JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。
- java jsp考试试题_JSP测试题一
- java 怎么把日期格式化时间_如何实现java日期格式化?
- 5gwifi信道哪个最好,wifi信道在哪里设置如何检测哪个路由器信道最快
- CrossMap基因坐标转换:hg38和hg37互换
- 环境试验之单臂跌落试验机操作规程
- 监狱视频探视(会见)系统
- 离散数学第六版第er章偶数题答案_离散数学答案第二章习题解答
- 华硕固件Linux-arm,AC86UASUS固件交叉编译的问题
- Git下载与安装 Windows