題目描述
* 題目描述:給定一個數組,裏面有6個整數,求這個數組能夠表示的最大24進制的時間是多少,
* 輸出這個時間,無法表示輸出invalid
* 輸入描述:輸入爲一個整數數組,數組內有6個整數
* 輸入整數數組長度爲6,不需要考慮其它長度,元素值爲0或者正整數,
* 6個數字每個數字只能使用一次。
* 輸出描述:輸出爲一個24進賬格式的時間,或者字符串“invalid”
*
* 示例輸入:[0,2,3,0,5,6]
* 示例輸出: 23:56:00
代碼實現
/**************************************************************
* * 題目描述:給定一個數組,裏面有6個整數,求這個數組能夠表示的最大24進制的時間是多少,
* * 輸出這個時間,無法表示輸出invalid
* * 輸入描述:輸入爲一個整數數組,數組內有6個整數
* * 輸入整數數組長度爲6,不需要考慮其它長度,元素值爲0或者正整數,
* * 6個數字每個數字只能使用一次。
* * 輸出描述:輸出爲一個24進賬格式的時間,或者字符串“invalid”
* *
* * 示例輸入:[0,2,3,0,5,6]
* * 示例輸出: 23:56:00
* **************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#define IN_BUF_SIZE 6
/* 在數組中找不大於某數的最大數字 */
int find_max(int* src,int up_load)
{
if(NULL == src)
{
printf("[Error]:input is NULL!func:%s Line:%d\n\r",__FUNCTION__,__LINE__);
return -1;
}
int tmp=-1,point=0;
while(point < IN_BUF_SIZE)
{
if(*(src+point) < up_load && -1 != *(src+point))
{
if(tmp < *(src+point))
tmp = *(src+point);
}
point++;
}
point = 0;
/* 將已用的數字置爲-1 */
while(point < IN_BUF_SIZE)
{
if(tmp == *(src+point))
{
*(src+point) = -1;
break;
}
point++;
}
return tmp;
}
void find_max_time(int* src)
{
if(NULL == src)
{
printf("[Error]:input is NULL!func:%s Line:%d\n\r",__FUNCTION__,__LINE__);
return;
}
int h_h=-1,h_l=-1;
int m_h=-1,m_l=-1;
int s_h=-1,s_l=-1;
h_h = find_max(src,3); /* 小時高位範圍:0-2 */
if(2 == h_h)
h_l = find_max(src,4); /* 當時間高位是2的時候,低位最大隻能到4 */
else
h_l = find_max(src,10); /* 時間高位是0-1時,低位範圍是0-9 */
m_h = find_max(src,6); /* 分鐘高位 */
m_l = find_max(src,10);
s_h = find_max(src,6);
s_l = find_max(src,10);
if(-1 == h_h || -1 == h_l || -1 == m_h || -1 == m_l || -1 == s_h || -1 == s_l)
printf("invalid!\n\r"); //調試用h_h=%d,h_l=%d,m_h=%d,m_l=%d,s_h=%d,s_l=%d\n",h_h,h_l,m_h,m_l,s_h,s_l);
else
printf("%d%d:%d%d:%d%d\n",h_h,h_l,m_h,m_l,s_h,s_l);
}
void main()
{
int input[IN_BUF_SIZE];
memset(input,-1,sizeof(input));
printf("[Input format]:[0,1,2,3,4,5]\n\r");
scanf("[%d,%d,%d,%d,%d,%d]",&input[0],&input[1],&input[2],&input[3],&input[4],&input[5]);
find_max_time(input);
}
測試結果
注意事項
時間翻轉:24時翻轉爲0點。