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