资源简介
拉丁矩阵C语言算法和报告,包含C语言代码,主要为递归回溯算法,详细包含注释
代码片段和文件信息
#include
#include
#include
using namespace std;
const int MAX = 50;
int n m;
int board[MAX][MAX];
//考察当前列是否有相同形状的宝石
//如果有,返回false;否则,返回true
bool ok(int r int c int k)
{
for(int i=1; i {
if(board[i][c] == k) //判断当前列是否有相同形状的宝石
return false;
}
return true;
}
long int num = 0;
//不同的宝石排列方案数
//从上到下,从左到右递归搜索,即先行后列
void backtrack(int r int c)
{
for(int i=c; i<=n; i++) //列
{
if(ok(r c board[r][i])) //考察当前列是否有相同形状的宝石
{
swap(board[r][c] board[r][i]); //交换列
if(c == n) //如果列考察完毕
{
if(r == m) //如果行考察完毕
{
num++; //方案数+1
return;
}
else
backtrack(r+1 1); //考察下一行
}
else
backtrack(r c+1); //考察下一列
swap(board[r][c] board[r][i]); //交换列
}
}
}
int main()
{
ifstream fin(“input.txt“);
ofstream fout(“output.txt“);
fin >> m;
fin >> n;
int i j;
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
board[i][j] = j;
backtrack(1 1);
fout<< num;
fout<< endl << endl;
cout << “显示结果在output.txt中“ << endl;
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3 2019-06-09 12:47 拉丁矩阵C语言算法和报告\input.txt
文件 6 2019-06-12 23:32 拉丁矩阵C语言算法和报告\output.txt
文件 536064 2019-06-27 12:17 拉丁矩阵C语言算法和报告\实验报告.doc
文件 1481 2019-06-09 12:47 拉丁矩阵C语言算法和报告\拉丁矩阵.cpp
文件 278528 2019-06-12 23:32 拉丁矩阵C语言算法和报告\拉丁矩阵.exe
文件 6269 2019-06-12 23:32 拉丁矩阵C语言算法和报告\拉丁矩阵.o
目录 0 2019-06-27 12:17 拉丁矩阵C语言算法和报告\
- 上一篇:C语言编写学生信息管理系统
- 下一篇:图的邻接矩阵和邻接表表示
评论
共有 条评论