金幣陣列問題

2021-08-01 15:42:37 字數 960 閱讀 5540

有m*n枚金幣在桌面上排成乙個金幣陣列。

每乙個金幣正面朝上,或背面朝上,分別用0和1表示。

金幣陣列遊戲的規則是:

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

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

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

,,,};//初始矩陣

int b[4][3]=,,,};//目標矩陣

// int a[4][3]=,,,};//初始矩陣

// int b[4][3]=,,,};//目標矩陣

int c[4][3];//副矩陣

for(i=0;i<3;i++)//i控制列

count++;

}else

count++;}}

}if(i>0)

else

if(k==3)//k走完,j走完,交換i列與j列 && j==2

count++;}}

}}}if(flag)

printf("最少需要:%d次\n",count);

else

printf("無法完成。\n");

return0;}

/*思路:

因為要求最少變換次數,所以行變換只能變換一次,因此剩下的都是列變換。

a. 第i列與第0列交換,與目標矩陣的第0列匹配(進行行變換),然後依次匹配剩下的列。

b. 如果匹配成功,則交換,繼續匹配剩下的列。

c. 如果匹配失敗,讓第i+1列與第0列交換,在重新進行 a => b => c。

*/

金幣陣列問題

問題描述 有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表示金幣的狀態。遊戲規則 每次將任意一行金幣翻過來 每次可任意交換兩列 演算法設計 給定陣列初始狀態,目標狀態,按遊戲規則計算從初始狀態到目標狀態需要的最少變換次數 資料輸入 從...