0
已解决
张皓然
中级光能
中级光能
/*
题目描述 De**ion
“Accepted:100分”是自动判题**同学们最期待的回复。本题属于酷町堂的
“Accepted:100分”大派送 —— 只要读入的字符串满足下列条件,**就输
出“YES”,否则输出“NO”。
得到“Accepted:100分”的条件是:
1、字符串中必须仅有 C、 D、 T这三种字符,不可以包含其它字符;
2、任意形如 xCDTx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 D 组成的字符串;
3、如果 aCbTc 是正确的,那么 aCbDTca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 D 组成的字符串。
输入描述 Input De**ion
第1行给出一个自然数n (<10),是需要检测的字符串个数。
接下来每个字符串占一行,字符串长度不超过100,且不包含空格。字符串中只能有一个C一个T,中间末尾和开头可以随便插入D。
但是必须满足开头的D的个数 * 中间的D的个数 = 结尾的D的个数
输出描述 Output De**ion
每个字符串的结果占一行,如果该字符串可以获得“Accepted:100分”,则输出YES,否则输出NO。
样例输入 Sample Input
8
CDT
CDDT
DDCDTDD
DDCDDTDDDD
xCDTx
CT
Whatever
DCDDDTDD
样例输出 Sample Output
YES
YES
YES
YES
NO
NO
NO
NO
数据范围及提示 Data Size & Hint
n<10
n个字符串,每个字符串长度不超过100
*/
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
//int a[255];
bool bsCDT(string s){
for(int i=0;i<s.length();i++){
if(s[i]!='C'&&s[i]!='D'&&s[i]!='T'){
cout<<"NO\n";
return 1;
}
}
return 0;
}
bool ywCDT(string s){
int C=0,D=0,T=0;
for(int i=0;i<s.length();i++){
if(s[i]=='C'){
C++;
}
if(s[i]=='D'){
D++;
}
if(s[i]=='T'){
T++;
}
}
if(!(C==1&&D&&T==1)){
cout<<"NO\n";
return 1;
}
return 0;
}
int C(string s){
for(int i=0;i<s.length();i++){
if(s[i]=='C'){
return i;
}
}
}
int T(string s){
for(int i=0;i<s.length();i++){
if(s[i]=='T'){
return i;
}
}
}
int main(){
cin>>n;
while(n--){
cin>>s;
if(bsCDT(s)){
continue;
}
if(ywCDT(s)){
continue;
}
int c=C(s);
int t=T(s);
int len=s.length()-1;
if((c-0)*(t-c-1)==(len-t)){
cout<<"YES\n";
}else{
cout<<"NO\n";
}
// cout<<(c-0)<<"*"<<(t-c-1)<<"="<<(len-t)<<"\n";
}
return 0;
}
极限了。
救我狗命,V你50
0
已采纳
姚炫好
资深守护
资深守护
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int main() {
cin>>n;
while(n--){
cin>>s;
map<char,int> m;
int p,t;
bool flag=0;
for (int i=0;i<s.size();i++) {
m[s[i]]++;
if (s[i]=='C') p=i;
if (s[i]=='T') t=i;
if (s[i]!='C'&&s[i]!='D'&&s[i]!='T') flag=1;
}
// cout<<(m['C']!=1)<<" "<<(m['T']!=1)<<" "<<(m['D']==0)<<" "<<(flag==1)<<"\n";
// cout<<m['C']<<" "<<m['T']<<" "<<m['D']<<" "<<flag<<"\n";
if(m['C']!=1||m['T']!=1||m['D']==0||flag==1){
cout<<"NO\n";
continue;
}
int l=p,mid=t-p-1,r=s.size()-t-1;
if(mid==0||l*mid!=r) cout<<"NO\n";
else cout<<"YES\n";
}
return 0;
}
\
应该没事
0
0
0
0
0
0