poj2814 撥鐘問題 C語言 列舉演算法

2022-01-31 19:50:16 字數 736 閱讀 3833

#include #include 

/*首先,我們考慮用長度為9的陣列表示表盤的狀態以及調表的操作,終止的條件是表盤狀態陣列所有元素模4為0;

如果一種操作使用超過4次,那麼相當於沒有操作,所以運算元組需要多出一位記錄造作使用的次數,乙個操作最多使用3次

特別是我們注意到這個題沒有問操作的順序,所以操作的前後順序其實是沒有影響的;

這樣其實是對進行了哪些操作,操作了多少次進行列舉,也就是對乙個9*4的矩陣進行列舉;並求矩陣行元素和的最小值,

一共列舉4的9次方次

*/short clocks[9],min=1000,operations[9][9],count[9],best[9

];

void change()//

這個函式的作用是按照count調整clocks,並修改min,再把clocks改回去

if(flag)

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

for(j=0;j<9;j++)

clocks[j]-=(operations[i][j]*count[i]);

} int

main()

} for(i=0;i<9;i++)

for(j=0;j)

printf(

"%d

",i+1

);

return

0;

}

Openjudge2814 撥鐘問題

題目 有9個時鐘,排成乙個3 3的矩陣。現在需要用最少的移動,將9個時鐘的指標都撥到12點的位置。共允許有9種不同的移動。如下表所示,每個移動會將若干個時鐘的指標沿順時針方向撥動90度。移動 影響的時鐘 1 abde 2 abc 3 bcef 4 adg 5 bdefh 6 cfi 7 degh 8...

OpenJ Bailian 2814 撥鐘問題

總時間限制 1000ms 記憶體限制 65536kb 描述有9個時鐘,排成乙個3 3的矩陣。o o o a b c o o o d e f o o o g h i 圖 1 現在需要用最少的移動,將9個時鐘的指標都撥到12點的位置。共允許有9種不同的移動。如下表所示,每個移動會將若干個時鐘的指標沿順時...

POJ 1166 The Clocks 撥鐘問題

有9個時鐘,排成乙個3 3的矩陣。現在需要用最少的移動,將9個時鐘的指標都撥到12點的位置。共允許有9種不同的移動。如下表所示,每個移動會將若干個時鐘的指標沿順時針方向撥動90度。移動 影響的時鐘 1 abde 2 abc 3 bcef 4 adg 5 bdefh 6 cfi 7 degh 8 gh...