国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

POJ-1816 撥鐘問題

2019-11-14 09:34:04
字體:
供稿:網(wǎng)友

題目

來源

中國MOOC程序設計與算法(二)第一周作業(yè)2 http://cxsjsxmooc.openjudge.cn/2017t2sPRinghw1/2/

限制

總時間限制: 1000ms 內(nèi)存限制: 65536kB

描述

有9個時鐘,排成一個3*3的矩陣。

示意圖

現(xiàn)在需要用最少的移動,將9個時鐘的指針都撥到12點的位置。共允許有9種不同的移動。如下表所示,每個移動會將若干個時鐘的指針沿順時針方向撥動90度。

移動 影響的時鐘

1        ABDE 2        ABC 3        BCEF 4        ADG 5        BDEFH 6        CFI 7        DEGH 8        GHI 9        EFHI

輸入

9個整數(shù),表示各時鐘指針的起始位置,相鄰兩個整數(shù)之間用單個空格隔開。其中,0=12點、1=3點、2=6點、3=9點。

輸出

輸出一個最短的移動序列,使得9個時鐘的指針都指向12點。按照移動的序號從小到大輸出結(jié)果。相鄰兩個整數(shù)之間用單個空格隔開。

樣例輸入

3 3 0 2 2 2 2 1 2

樣例輸出

4 5 8 9

解題報告

思路分析

重點 本題和特殊密碼鎖的最相似之處就在于,對鐘進行4次撥動操作,將與沒有進行操作等同! 因此,9種操作最多進行4次(5次及以上沒有意義),窮舉可得

源代碼

#include <stdio.h>int clock[9] = {0};int n1 = 0;int n2 = 0;int n3 = 0;int n4 = 0;int n5 = 0;int n6 = 0;int n7 = 0;int n8 = 0;int n9 = 0;int main(){ int i = 0; //輸入鐘的初始狀態(tài) for( i = 0; i < 9; i++ ) { scanf("%d", &clock[i]); } for( n1 = 0; n1 < 4; n1++ ) { for( n2 = 0; n2 < 4; n2++ ) { for( n3 = 0; n3 < 4; n3++ ) { for( n4 = 0; n4 < 4; n4++ ) { for( n5 = 0; n5 < 4; n5++ ) { for( n6 = 0; n6 < 4; n6++ ) { for( n7 = 0; n7 < 4; n7++ ) { for( n8 = 0; n8 < 4; n8++ ) { for( n9 = 0; n9 < 4; n9++ ) { if( isOK( clock ) ) { for( i=0;i<n1;i++ ) printf("1 "); for( i=0;i<n2;i++ ) printf("2 "); for( i=0;i<n3;i++ ) printf("3 "); for( i=0;i<n4;i++ ) printf("4 "); for( i=0;i<n5;i++ ) printf("5 "); for( i=0;i<n6;i++ ) printf("6 "); for( i=0;i<n7;i++ ) printf("7 "); for( i=0;i<n8;i++ ) printf("8 "); for( i=0;i<n9;i++ ) printf("9 "); } c9(); } c8(); } c7(); } c6(); } c5(); } c4(); } c3(); } c2(); } c1(); } return 0;}int isOK( int c[] ){ int r = 1; int i = 0; for( i = 0; i < 9; i++ ) { if( c[i] != 0 ) r = 0; } return r;}void c1(){ clock[0] = (clock[0]+1)%4; clock[1] = (clock[1]+1)%4; clock[3] = (clock[3]+1)%4; clock[4] = (clock[4]+1)%4;}void c2(){ clock[0] = (clock[0]+1)%4; clock[1] = (clock[1]+1)%4; clock[2] = (clock[2]+1)%4;}void c3(){ clock[1] = (clock[1]+1)%4; clock[2] = (clock[2]+1)%4; clock[4] = (clock[4]+1)%4; clock[5] = (clock[5]+1)%4;}void c4(){ clock[0] = (clock[0]+1)%4; clock[6] = (clock[6]+1)%4; clock[3] = (clock[3]+1)%4;}void c5(){ clock[1] = (clock[1]+1)%4; clock[3] = (clock[3]+1)%4; clock[4] = (clock[4]+1)%4; clock[5] = (clock[5]+1)%4; clock[7] = (clock[7]+1)%4;}void c6(){ clock[2] = (clock[2]+1)%4; clock[5] = (clock[5]+1)%4; clock[8] = (clock[8]+1)%4;}void c7(){ clock[3] = (clock[3]+1)%4; clock[4] = (clock[4]+1)%4; clock[6] = (clock[6]+1)%4; clock[7] = (clock[7]+1)%4;}void c8(){ clock[6] = (clock[6]+1)%4; clock[7] = (clock[7]+1)%4; clock[8] = (clock[8]+1)%4;}void c9(){ clock[4] = (clock[4]+1)%4; clock[5] = (clock[5]+1)%4; clock[7] = (clock[7]+1)%4; clock[8] = (clock[8]+1)%4;}

BUG

這段代碼只是恰巧通過了,但是如果產(chǎn)生了多種可能答案,并且正確答案在后,那就不能正確輸出了


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 左权县| 宜兰县| 天水市| 红河县| 石台县| 彝良县| 尼勒克县| 宁海县| 河北区| 丰县| 德清县| 璧山县| 靖远县| 兴业县| 静安区| 西城区| 台山市| 锡林浩特市| 天气| 石首市| 娱乐| 武邑县| 德安县| 资源县| 阳谷县| 新龙县| 中宁县| 麦盖提县| 三都| 鹤庆县| 黑河市| 浙江省| 东乌| 广宁县| 绥中县| 尼玛县| 内江市| 富蕴县| 柯坪县| 青岛市| 法库县|