拉丁矩阵问题
来源:互联网 发布:php单例模式代码 编辑:程序博客网 时间:2024/04/30 10:58
#include<iostream>#include<fstream>#include<algorithm>using namespace std;const int MAX = 50;int n, m;int board[MAX][MAX];//考察当前列是否有相同形状的宝石bool ok(int r, int c, int k){ for(int i=1; i<r; 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++; return; } else backtrack(r+1, 1); //考察下一行 } else backtrack(r, c+1); //考察下一列 swap(board[r][c], board[r][i]); } }}int main(){ ifstream fin("拉丁矩阵.txt"); cout << "\n输入正整数m:"; fin >> m; cout << m << endl; cout << "输入正整数n:"; fin >> n; cout << n; int i, j; for(i=1; i<=m; i++) for(j=1; j<=n; j++) board[i][j] = j; backtrack(1, 1); cout << "\n不同的宝石排列方案数为:" << num; cout << endl << endl; return 0;}
0 0
- 拉丁矩阵问题
- 拉丁矩阵问题
- 拉丁矩阵问题
- 拉丁矩阵问题
- 算法 拉丁矩阵问题
- 拉丁矩阵问题
- 拉丁矩阵问题
- 拉丁矩阵问题
- 拉丁矩阵问题
- 拉丁矩阵问题
- 拉丁矩阵
- 拉丁矩阵
- 拉丁矩阵
- 拉丁矩阵问题 利用回溯法的C++实现方案
- 最小拉丁矩阵
- 特殊拉丁矩阵
- 重复拉丁矩阵
- 拉丁矩阵 回溯 c java
- Linux压缩解压缩文章总结
- codeforces 412A Poster
- nyoj 诡异的电梯【Ⅰ】 1070 (DP) 好题
- 编译原理与技术(第四章)语法分析
- hdu 3466 Proud Merchants
- 拉丁矩阵问题
- 关于CocoaPods的使用小说明
- Palindrome Number
- git命令行提交代码(因为某些原因Eclipse不能提交代码,所以改用git命令)
- hdoj3664Permutation Counting【递推】
- split 的 使用方法
- 数据库
- 1、OC 语言的基本特点 OC 语言是 C 语言的一个超集,只是在 C 的基础之上加上了面向对象(oo) 的特性; OC 与 Java 语言相同都是单继承,这一点与 C++语言不同(多重继承); OC
- hiho 14 并查集