重複拉丁矩陣

2021-07-08 10:36:18 字數 934 閱讀 3821

#include

#include

#include

using

namespace

std;

const

int max = 50;

int n, m, k;

int times[max]; //每種寶石的重複次數

int id[max]; //每個寶石的價值序號

int board[max][max]; //寶石矩陣

//考察當前列寶石數是否多於應出現的次數

bool ok(int r, int c, int s)

double num = 0; //不同的寶石排列方案數

//從上到下,從左到右遞迴搜尋,即先行後列

void backtrack(int r, int c)

else

backtrack(r+1, 2); //考察下一行

}else

backtrack(r, c+1); //考察下一列

swap(board[r][c], board[r][i]);

}

}int main()

}int j;

for(i=1; i<=m; i++) //初始化為單位矩陣

for(j=1; j<=n; j++)

board[i][j] = id[j];

backtrack(2, 2);

cout

<< "\n不同的寶石排列方案數為:"

書上的正確答案為 84309,不知錯在**

拉丁矩陣問題

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