1003_(2)我要通过

来源:互联网 发布:ktv制作软件 编辑:程序博客网 时间:2024/06/07 07:21

我竟然也提交了十次才通过,就算是编译复制黏贴错误也不能原谅。这个题实在是没有好好读题


#include<iostream>#include<string>using namespace std;#define MAX 1001//通过题目应该得到的1、P和T的个数都是1 2、b=A ,a = c 3、第三个条件中中间每增加一个A就在后面增加同样数量的aint main(){int n,i,j,locat_p=0,locat_t=0,p,t;cin >> n;//string s[10][MAX];//是个字符串!不是字符string *r = new string[n];//动态的数组一定是指针char s[10][MAX];for(i = 0;i < n;i++){cin>>s[i];bool flag = false;//getline(cin,s);//用getline可以接受包含空格的文本,当是字符的时候可写成cin.getline(char_name,number) 前面不能再有cin了!!否则会出现错误!int len;len = strlen(s[i]);//string 的时候用length(),size(),而是字符的时候用strlen()p = 0;t = 0;for(j = 0;j < len;j++){if(s[i][j] == 'P')//字符串是双引号,单引号是字符char类型{locat_p = j;p++;    }  elseif(s[i][j] =='T'){locat_t = j;t++;}else if(s[i][j] != 'A')//此处符号应该是&&,没有空格的判断{flag = true;break;    }}if(flag || p!=1||t!= 1){r[i] = "NO";}else{int times = locat_t - locat_p - 1;if(times>=1&&locat_p*times == (len - locat_t - 1))//1,2,3都是一个条件,除法比乘法范围小,PT也是正确的r[i] = "YES";else    r[i] = "NO";} }for(i = 0;i < n;i++)cout << r[i]<<endl;delete [] r;return 0;}