拉丁矩陣問題

2021-06-17 20:45:33 字數 820 閱讀 4731

問題描述:

現有n種不同形狀的寶石,每種寶石有足夠多顆。欲將這些寶石排列成m行n列的乙個矩陣,m<=n,使矩陣中每一行和每一列的寶石都沒有相同形狀。試設計乙個演算法,計算出對於給定的m和n,有多少種不同的寶石排列方案。

演算法設計:

對於給定的m和n,計算出不同的寶石排列方案數。

資料輸入:

第一行有2個正整數m和n,0<9。

結果輸出:

將計算出的寶石排列方案數輸出。

分析:

標準拉丁矩陣:寶石矩陣的第一行從左到右排列為1,2,3.....n,且第一列從上到下排列為1,2,3....m的陣列。

設m行n列的標準拉丁矩陣個數為l(m,n)。一般情況下,m行n列的拉丁矩陣個數為r(m,n).本題要求r(m,n)。

公式:r(m,n)=n!(n-1)!l(m,n)/(n-m)!

具體**:

#include#includeint num[10][10];

int m,n;

int count=0;

void swap(int *num1,int *num2)

int yes(int r,int c,int k)

void backtrack(int r,int c)

else

}else

swap(&num[r][c],&num[r][i]);}}

}int main()

拉丁矩陣問題

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,有多少種不同的寶石排列方案。程式設計任務 對於給定的m和n,計算出不同的寶石排列方案數。資料輸入 input.tx...

拉丁矩陣問題

拉丁矩陣問題現有 n種不同形狀的寶石,每種寶石有足夠多顆。欲將這些寶石排列成m行 n列的乙個矩陣,m n 使矩陣中每一行和每一列的寶石都沒有相同的形狀。試設計乙個演算法,計算出對於給定的m和 n,有多少種不同的寶石排列方案。輸入 3 3 輸出 12 解 拉丁矩陣問題 首先給矩陣進行賦值,每一行賦值都...