# Greedy# String# Iteration

a882 - B. 我灰灰的橡皮鴨是個恐怖的危機

🔗 前往 ZeroJudge 原題

題目描述

題目描述了小鴨展覽前,負責人發現部下喝醉,需要自己油漆橡皮鴨的情況。題目給定一組字串,字串中的每個字元代表橡皮鴨的狀態:'O' 代表已塗滿,'X' 代表未塗,'H' 代表塗了一半。要求計算需要多少桶油漆,已知每隻塗一半的鴨子需要 2 桶油漆,未塗的鴨子也需要 2 桶油漆。

解題思路

題目要求計算需要多少桶油漆,只需要遍歷字串,統計 'X' 和 'H' 的數量,然後將其乘以 2 即可得到需要的油漆桶數。這是一個簡單的字串遍歷和計數問題,可以使用貪心策略,直接統計需要油漆的鴨子數量。

複雜度分析

  • 時間複雜度: O(n),其中 n 是字串的長度。需要遍歷字串一次。
  • 空間複雜度: O(1),只需要常數級別的額外空間來儲存計數器。

程式碼

#include <stdio.h>
int main(){
	int a;
	char b[5001];
	scanf("%d",&a);
	getchar();
	while(a--){
		int i=0,ans=0;
		while((b[i]=getchar())!='\n'){
			(b[i]=='X')?ans+=2:(b[i]=='H')?ans++:0;
    		++i;
    	}
    	printf("%d\n",ans);
	}
}

Discussion