">**問題描述
*現有n 種不同形狀的寶石,每種寶石有足夠多顆。
*將這些寶石排列成m行n 列的乙個矩陣,m≤n,使矩陣中每一行和每一列的寶石都沒有相同形狀。
*設計乙個演算法,計算出對於給定的m和n,有多少種不同的寶石排列方案。
**程式設計任務
*對於給定的m和n,計算出不同的寶石排列方案數。
**資料輸入 input.txt
*第一行有兩個正整數m和n,0
**資料輸出 output.txt
*將計算出的寶石排列方案數輸出到檔案
**解決思路
*回溯,主要是行和列一起回溯
*二維陣列board[m][n]儲存寶石矩陣。每行初始化為單位排列,第一行從上到下為1,2,...m
**參考
*參考**
*/#include
#include
#include
#include
#include
using
namespace
std;
intconst
max=
9;typedef
intarray2d
[max
][max
];array2d
board;
int n(0
),m(0
),count(0);
inline
void
readfile(const
string
&filename)
template
<
typename
t>
inline
intwritefile(string
filename
,t n)
ofile
<< n;
cout
<<
"write over."
<<
endl;
return0;}
intbound(intr,
intc)
void
backtrack(intr,
intc)
printf("
\n");
return;
}if (c
> n)
for (inti=
c; i
<= n; ++i)
}int
main()
}for (inti=
1; i
<= n; ++
i)swap(board[i
][1],board[i
][i]);backtrack(1
,1);
writefile(output
,count);
system("pause");
return0;}
拉丁矩陣問題
問題描述 現有n種不同形狀的寶石,每種寶石有足夠多顆。欲將這些寶石排列成m行n列的乙個矩陣,m n,使矩陣中每一行和每一列的寶石都沒有相同形狀。試設計乙個演算法,計算出對於給定的m和n,有多少種不同的寶石排列方案。演算法設計 對於給定的m和n,計算出不同的寶石排列方案數。資料輸入 第一行有2個正整數...
拉丁矩陣問題
include include include using namespace std const int max 50 int n,m int board max max 考察當前列是否有相同形狀的寶石 bool ok int r,int c,int k return true long int ...
拉丁矩陣問題
拉丁矩陣問題現有 n種不同形狀的寶石,每種寶石有足夠多顆。欲將這些寶石排列成m行 n列的乙個矩陣,m n 使矩陣中每一行和每一列的寶石都沒有相同的形狀。試設計乙個演算法,計算出對於給定的m和 n,有多少種不同的寶石排列方案。輸入 3 3 輸出 12 解 拉丁矩陣問題 首先給矩陣進行賦值,每一行賦值都...