金幣陣列問題

2021-10-03 04:26:53 字數 895 閱讀 4898

1.問題描述

有mxn枚金幣(m,n<=100)在桌面上擺成乙個m行n列的陣列,每一枚金幣正面朝上或者背面朝上,用數字0和1表示金幣的狀態。

遊戲規則

①每次將任意一行金幣翻過來

②每次可任意交換兩列

演算法設計:給定陣列初始狀態,目標狀態,按遊戲規則計算從初始狀態到目標狀態需要的最少變換次數

資料輸入:從檔案input.txt輸入資料,第一行k表示資料組數

每組資料第一行m n表示m行n列,接下來為兩個mxn的陣列表示金幣的初始狀態和目標狀態

結果輸出:將結果(最少變換次數)輸出到檔案output.txt

2.問題分析

3.演算法實現

int mintimes = maxint;

int getminchangetimes (

int*

*former ,

int*

*target )}}

}if( ok ==

true

&& count < mintimes )

// 方案可行比較交換次數

mintimes = count ;

}return

( mintimes !

= maxint )

? mintimes :-1

;}

金幣陣列問題

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

金幣陣列問題

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

金幣陣列問題

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