PAT1003 我要通過(C語言)

網上已經有很多解析了,就不廢話了。
主要注意一下幾點:

  1. P、A、T三個字符都要出現。(測試點2)
  2. P、T僅且出現一次。
  3. P在T之前。
  4. P和T之間至少有一個A。
  5. P左邊A的數量 * P和T之間A的數量 = T右邊A的數量。

代碼簡單易懂,就是判斷上面幾個條件。

#include <stdio.h>

int isRight(char *s)
{
	int i = 0,j = 0, count_p = 0, count_t = 0;
	int arr[3] = {0};
	while(s[i] != '\0')
	{
		switch(s[i])
		{
		case 'A':
			if(j > 2)
			{
				return 0;
			}
			arr[j] += 1;
			break;
		case 'P':
			count_p++;
			if(count_p > 1 || j >= 1)
			{
				return 0;
			}
			j++;
			break;
		case 'T':
			count_t++;
			if(count_t > 1 || j < 1)
			{
				return 0;
			}
			j++;
			break;
		default:
			return 0;
		}
		i++;
	}
	if(arr[1] != 0 && arr[0] * arr[1] == arr[2] && count_t && count_p)
	{
		return 1;
	}
	return 0;
}


int main()
{	
	int n, i;
	char str[100];
	scanf("%d", &n);
	for(i = 0; i < n; i++)
	{
		scanf("%s", str);
		if(isRight(str))
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	return 0;
}```

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章