构造数据?P5595 【XR-4】歌唱比赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
XYZXYZ错误原因在于?
一旦有一位是z代表两者点赞数暂时相同?
如果z后面不是z
137 148 即第一位相同 后两位不同 则不满足两者点赞数相等
因此我们从前往后检查字符串 一旦遇到z后面不是z的情况返回-1即可
对于满足条件的输入
当一个人领先我们让他输出2而另一个输出1即可
相等则大家都输出3.。
#include<iostream>
#include<string.h>
using namespace std;
int main(){
?? ?char str[1000010];
?? ?int a[1000010],b[1000010];
?? ?cin>>str;
?? ?
?? ?int m=strlen(str);
?? ?
?? ?int flag=0,num=0;
?? ?int mask=0;
?? ?int cnt=0;
?? ?while(cnt<m){
?? ??? ?if(str[cnt]=='Z'){
?? ??? ??? ?mask=1;
?? ??? ?}
?? ??? ?if(mask==1&&str[cnt]!='Z'){
?? ??? ??? ?flag=1;
?? ??? ??? ?cout<<-1;
?? ??? ??? ?break;?
?? ??? ?}
?? ??? ?cnt++;
?? ?}?
?? ?
?? ?
?? ?if(flag==0){
?? ??? ?
?? ??? ?for(int i=0;i<m;i++){
?? ??? ?if(str[i]=='X'){
?? ??? ??? ?a[i]=2;b[i]=1;
?? ??? ?}else if(str[i]=='Y'){
?? ??? ??? ?a[i]=1;b[i]=2;
?? ??? ?}else{
?? ??? ??? ?a[i]=3;b[i]=3;
?? ??? ?}
?? ?}
?? ?
?? ?for(int i=0;i<m;i++){
?? ??? ?cout<<a[i];
?? ?}
?? ??? ?cout<<endl;
?? ?for(int i=0;i<m;i++){
?? ??? ?cout<<b[i];
?? ?}
?? ??? ?
?? ?}
?? ?
?? ?return 0;
}
注意用m来得到字符串长度 否则每次for循环都调用一次strlen 函数会tle.