撥鐘問題
描述有9個時鐘排成乙個3*3的矩陣,從上到下從左到右依次標為abcdefghi。
每個時鐘只有1個時針,時針初始指向3、6、9或12點。
對每乙個時鐘的時針共允許有9種不同的移動,每個移動會將若干個時鐘的指標沿順時針方向撥動90度。
移動 影響的時鐘
1 abde
2 abc
3 bcef
4 adg
5 bdefh
6 cfi
7 degh
8 ghi
9 efhi
輸入多組測試資料,每組測試資料3行3列,共9個整數,表示各時鐘指標的起始位置,相鄰兩個整數之間用單個空格隔開。其中,0=12點、1=3點、2=6點、3=9點。
輸出每組測試資料在一行中輸出乙個最短的移動序列,使得9個時鐘的指標都指向12點。按照移動的序號從小到大輸出結果。相鄰兩個整數之間用單個空格隔開。
樣例輸入
3 3 0
2 2 2
2 1 2
樣例輸出
4 5 8 9
我們可以分析每個時鐘被影響的移動方式有哪些
例如a會被移動1,2,4影響
題目就不過多地分析了,大佬們的部落格都講得很清楚了,我自己語言能力有限,擔心自己表達得不好。
a:1,2,4
b:1,2,3,5
c:2,3,6
d:1,4,5,7
e:1,3,5,7,9
f:3,5,6,9
g:4,7,8
h:5,7,8,9
i:6,8,9
方法一(暴力法):
#include
#define cir(i) for(int i=0;i<4;i++)
intmain()
}}for(
int i=
0;i<
9;i++
)printf
("\n");
}return0;
}
方法二
#include
#define cir(i) for(int i=0;i<4;i++)
intmain()
}}}for
(int i=
0;i<
9;i++
)printf
("\n");
}return0;
}
大一新生一枚
題目**於學校的oj平台
第一次做這道題有點蒙
老師對第二種方法一帶而過,本人懶不想寫,
在csdn沒有找到c語言的第二種方法,那乾脆就自己寫吧。
兩種方法都過了學校的oj平台
可以清晰地看到方法一耗時明顯多於方法二
[第乙個是方法二,第二個是方法一]
第一次發文,有點小激動。
希望未來我會一直努力,有朝一日能成為it界的大佬!
關於**,若有不足之處,非常希望您指正出來!
撥鐘問題的若干解法
問題描述 參考 有9個時鐘,排成乙個3 3的矩陣。現在需要用最少的移動,將9個時鐘的指標都撥到12點的位置。共允許有9種不同的移動。如右表所示,每個移動會將若干個時鐘的指標沿順時針方向撥動90度。移動 影響的時鐘 1 abde 2 abc 3 bcef 4 adg 5 bdefh 6 cfi 7 d...
八皇后問題的兩種解法
八皇后問題,是回溯演算法 的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8x8格的西洋棋 上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林 的象棋雜誌上不同的作者發表了40種不同的解,後...
6 2分魚問題兩種解法
分魚問題,從e開始遞推,使用for迴圈簡化中間計算,優化列舉 include using namespace std int main if i 0 已找到答案 break num 0 num 1 4 5 1 for int i 0 i 5 i cout num i return 0 分魚問題,從e...