題目描述
lzy去年買了個表,很神奇,是個二進位制手錶。如下圖所示
例如,上面的二進位制手錶讀取 「3:25」。
輸入乙個非負整數 n 代表當前 led 亮著的數量,輸出所有可能的時間。
結果按字典序排列
輸入
測試資料由多組測試樣例組成。每組測試樣例第一行輸入乙個整數 n ( 0 <= n <= 8 )
輸出
輸出所有可能的時間組合
樣例輸入
1樣例輸出
0:01
0:02
0:04
0:08
0:16
0:32
1:00
2:00
4:00
8:00
提示
1.小時不會以零開頭,比如 「01:00」 是不允許的,應為 「1:00」。
2.分鐘必須由兩位數組成,可能會以零開頭,比如 「10:2」 是無效的,應為 「10:02」。
3.輸出順序按照字典序從小到大排序
#include
using
namespace std;
int n,k;
int s[10]
=;bool vis[10]
;int sum=0;
string f[
200]
;bool
cmp(string a,string b)
void
dfs(
int m)
}for
(int i=
6;i<
10;i++)}
if(m<
60&&h<12)
}if(flag) f[k++
]=a;
}return;}
for(
int i=
0;i<
10;i++)}
}int
main()
}return0;
}
其實一開始這道題目一點思路都沒有;
李某人給我大大的提示,把坑點都告訴我了;
第一思路:全部時間換算成分鐘制,然後加上去n個點在算出小時和分鐘;
問題:分鐘的點相加不能超過60;
時鐘的點相加不能超過12;
正確思路:
把點先做上標記;
當點的數等於n時,在算出時鐘和分鐘;
如果時鐘和分鐘不符合要求(上面問題裡面的要求)拒絕存入string型陣列裡;如果符合,存入陣列;
做的時候發現,陣列有重複,所以當存入陣列時要判斷是否有重複出現,沒有在進行存入
陣列進行排序,然後輸出;
懵懵懂懂渾渾噩噩
大半夜失眠,爬起來寫部落格,我也是絕了.一年的神不知鬼不覺的在職考研,從某海濱城市雙非上岸某一線城市末流211,說起來著實沒什麼可驕傲的。就突然想記錄下這一年的風風雨雨 誇張了些,還沒淋著 不過可以說說得與失吧。自認為自己不是乙個很自律的人,但這一年也不知道是什麼驅使著自己乙個人學習,乙個人準備複試...