拉丁矩陣問題

2021-07-23 03:31:50 字數 1448 閱讀 1601

">**問題描述

*現有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 解 拉丁矩陣問題 首先給矩陣進行賦值,每一行賦值都...