• 大小: 547KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-18
  • 语言: C/C++
  • 标签: 拉丁矩阵  

资源简介

拉丁矩阵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语言算法和报告\

评论

共有 条评论

相关资源