題目描述
特定大小的停車場,數組cars[]表示,其中1表示有車,0表示沒車。車輛大小不一,小車占一個車位(長度1),貨車占兩個車位(長度2),卡車占三個車位(長度3)。
統計停車場最少可以停多少輛車,返回具體的數目。
輸入描述
整型字符串數組cars[],其中1表示有車,0表示沒車,數組長度小于1000。
輸出描述
整型數字字符串,表示最少停車數目。
用例
輸入 | 1,0,1 |
---|---|
輸出 | 2 |
說明 | 1個小車占第1個車位 |
輸入 | 1,1,0,0,1,1,1,0,1 |
---|---|
輸出 | 3 |
說明 | 1個貨車占第1、2個車位 |
給下面的代碼添加注釋(不要改動原本的代碼):
代碼
#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 定義停車場車位最大數量常量
#define MAX_LEN 1000int main() {// 初始化輸入字符串數組,用于存儲用戶輸入的以逗號分隔的字符序列char input[MAX_LEN];// 讀取標準輸入(即從控制臺讀取一行數據),并去掉末尾換行符fgets(input, MAX_LEN, stdin);input[strcspn(input, "\n")] = '\0';// 初始化整型數組cars,用于存儲轉換為整數形式的車輛狀態int cars[MAX_LEN];int count = 0; // 記錄有效輸入的數量// 使用strtok函數按逗號分割輸入字符串,并將每個數字串轉換為整數存入cars數組char *token = strtok(input, ",");while (token != NULL) {cars[count++] = atoi(token); // 將當前token轉換為整數并存入cars數組token = strtok(NULL, ","); // 繼續處理下一個token}// 初始化臨時變量tmplen用于計算連續停車長度,res用于記錄最少可以停多少輛車int tmplen = 0;int res = 0;// 遍歷整個cars數組for (int i = 0; i < count; i++) {// 當前車位有車(用1表示)if (cars[i] == 1) {tmplen++; // 增加連續停車長度計數// 判斷是否到達最后一個車位或者下一個車位是空的(用0表示)if (i == count - 1 || cars[i + 1] == 0) {// 根據停車長度計算能夠停放的車輛數(卡車占3個車位,小車或貨車各占1或2個車位)res += tmplen / 3; // 先添加能完全停放的卡車數量if (tmplen % 3 != 0) { // 若剩余車位不足3個,則增加一輛車res++;}tmplen = 0; // 重置臨時停車長度計數器}}}// 輸出最少可以停多少輛車的結果printf("%d\n", res);return 0;
}