1003. 我要通过

在这里插入图片描述

#include <stdio.h>
#include<stdlib.h>//包含system()函数的头文件
#include <string.h>
int main() {
	int num;
	char str[105];
	int flag;//如果不和格式标记为1
	int count_P, count_T;//计算P和T的数量,它们的数量只能为1
	int before_P, middle_A, after_T;//计算在P之前,P和T中间和T之后的A的数量
	int choose;//用于判断A处于哪个位置
	int index[10];//记录字符串是否正确的结果
	int i,j;
	for ( i = 0; i < 10; i++)
	{
		index[i] = 0;
	}
	scanf("%d", &num);
	i = 0;
	while (i<num) {
		//初始化值
		count_P = count_T = 0;
		before_P = middle_A = after_T = 0;
		choose = 1;
		flag = 0;
		scanf("\n%s", &str);
		for (j = 0; j < strlen(str); j++) {
			if (str[j] != 'P' && str[j] != 'A' && str[j] != 'T') {
				flag = 1;
			}
			if (str[j] == 'P') {
				count_P++;
				choose++;
			}
			if (str[j] == 'T') {
				count_T++;
				choose++;
			}
			if (str[j] == 'A') {
				switch (choose) {
				case 1:before_P++; break;
				case 2:middle_A++; break;
				case 3:after_T++; break;
				}
			}
		}
		//如果不出现其它字符且满足第三条规则即before_P*middle_A==after_T且P、T数量都为1且middle_A的值不为0
		if ((flag == 0) && (before_P * middle_A == after_T) && (count_P * count_T) == 1 && middle_A != 0) {
			index[i] = 1;//结果正确
			i++;
		}
		else {
			index[i] = 0;//结果错误
			i++;
		}
	}
	for (i = 0; i < num; i++) {
		if (index[i]==1)
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值