金幣陣列問題

2021-07-29 22:30:09 字數 1073 閱讀 3354

有m*n枚金幣在桌面上排成乙個金幣陣列。每乙個金幣正面朝上,或背面朝上,分別用0和1表示。         

金幣陣列遊戲的規則是:

(1)每次可將任一行金幣翻過來放在原來的位置上;

(2)每次可任選2列,交換這2列金幣的位置。         

給定金幣的初始狀態和目標狀態,計算按金幣遊戲規則,將金幣陣列從初始狀態變換到目標狀態所需的最少變換次數。

#include#include#define m 4

#define n 3

int a[m][n] = ,,,};

int b[m][n] = ,,,};

int temp[m][n];

int count;

//對某一行進行反轉,這裡是第col行

void trans1(int col)

//交換第col1列和第col2列

void trans2(int col1,int col2)

if(col1 != col2)

count ++;

}//判斷臨時陣列的第i列和目標陣列的第j列是否相等

bool same(int i,int j)

} return flag;

}int main()

trans2(0,k);

//比較第一列的所有元素,不相等就進行行變換

for(i = 0;i < m;i ++)

if(temp[i][0] != b[i][0])

trans1(i);

bool found;

//檢查每一列是否滿足條件

for(i = 0;i < n;i ++)

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

if(same(i,j))

if(found == false)

break;

} if(found == true)

answer = count;

} if(answer != 999999)

printf("%d",answer);

return 0;

}

金幣陣列問題

問題描述 有m x n m 100,n 100 個金幣在桌面上排成乙個m行n 列的金幣陣列。每一枚金幣或正面朝上或背面朝上。用數字表示金幣狀態,0表示金幣正面朝上,1 表示背面朝上。金幣陣列遊戲的規則是 1 每次可將任一行金幣翻過來放在原來的位置上 2 每次可任選2 列,交換這2 列金幣的位置。程式...

金幣陣列問題

有m n枚金幣在桌面上排成乙個金幣陣列。每乙個金幣正面朝上,或背面朝上,分別用0和1表示。金幣陣列遊戲的規則是 1 每次可將任一行金幣翻過來放在原來的位置上 2 每次可任選2列,交換這2列金幣的位置。給定金幣的初始狀態和目標狀態,計算按金幣遊戲規則,將金幣陣列從初始狀態變換到目標狀態所需的最少變換次...

金幣陣列問題

1.問題描述 有mxn枚金幣 m,n 100 在桌面上擺成乙個m行n列的陣列,每一枚金幣正面朝上或者背面朝上,用數字0和1表示金幣的狀態。遊戲規則 每次將任意一行金幣翻過來 每次可任意交換兩列 演算法設計 給定陣列初始狀態,目標狀態,按遊戲規則計算從初始狀態到目標狀態需要的最少變換次數 資料輸入 從...